当前位置: 首页 > news >正文

网页设计素材网站推荐网站后台主流网站开发语言

网页设计素材网站推荐,网站后台主流网站开发语言,网站开发 问题 关键技术,wordpress标题设置文章目录 1 OCCI使用1.1 初始化 - Environment 类1.2 连接数据库 - Connection 类1.3 执行SQL 2 OCCI在项目中的使用2.1 OCCI单独封装为一个类文件OCCIOP2.2 在ServerOP中作为私有成员2.3 ServerOP::ServerOP(string json)中实例化进行使用2.4 秘钥协商过程中进行读写操作 1 OC… 文章目录 1 OCCI使用1.1 初始化 - Environment 类1.2 连接数据库 - Connection 类1.3 执行SQL 2 OCCI在项目中的使用2.1 OCCI单独封装为一个类文件OCCIOP2.2 在ServerOP中作为私有成员2.3 ServerOP::ServerOP(string json)中实例化进行使用2.4 秘钥协商过程中进行读写操作 1 OCCI使用 // 头文件 #include occi.h // occi的接口类在对应的命名空间中 using namespace oracle::occi;// 使用 1. 初始化一个环境-对应的类: Environment 2. 使用初始化完成的环境对象创建一个连接, 得到一个连接对象: Connection, 通过这个对象可用连接并操作服务器 3. 对数据库的操作: 添删查改(对应相关的sql语句)- 通过得到的连接数据库的实例对象, 创建一个可以对象数据进行sql操作的一个对象: Statement 4. 如果对数据进行是查询操作, 会得到一个结果集, 这个结果集对应的也是一个类: ResultSet 5. 释放资源- 结果集资源-ResultSet- 对数据进行sql操作的对象-Statement- 销毁连接对象-Connection- 数据连接环境-Environment1.1 初始化 - Environment 类 OCCI通过创建一个Environment的对象完成初始化工作。 可以通过Environment创建数据库连接从而进行其它的操作 要创建Environment应该调用Environment类的静态方法createEnvironment() // 环境初始化 Environment* env Environment::createEnvironment(); // 关闭, 释放资源 Environment::terminateEnvironment(env);1.2 连接数据库 - Connection 类 连接数据库通过Connection类的对象实例实现 调用Environment类的**createConnection()**方法可以创建一个Connection对象 // 函数原型: // 连接串格式: IP:端口/数据库实例名 Connection *Environment::createConnection( const string userName,const string password, const string connectString );// 函数调用 const string userName scott; // 用户名 const string passwd tiger; // 密码 const string connstr 192.168.247.129:1521/orcl; // 数据库连接串 Connection* conn env-createConnection(userName, passwd, connstr);使用**Environment::terminateConnection()**断开连接 // 断开连接 env-terminateConnection(conn);1.3 执行SQL Statement 类用于执行SQL语句,并获取返回结果。 ResultSet 类用于处理SELECT 查询的结果。 对于所有类型的数据的绑定或者获取OCCI都提供了统一的方法 setXXX 方法用于StatementgetXXX 方法用于Statement ResultSet OCCI会自动处理类型之间的转换。 使用方法 使用Connection:*createStatement()**创建Statement对象, 指定 SQL 命令(DDL/DML/query)作为参数 // 操作函数 Connection::createStatement(string sql);Statement::setSQL(string sql);Statement::execute(string sql); // can be used for any SQL, returns status // 执行一个insert/update/delete Statement::executeUpdate(string sql); // returns Insert/Update/Delete count // 执行一个select语句 Statement::executeQuery(string sql); // returns ResultSet结果集使用 setXXX 方法传递要绑定用于输入的值 使用合适的execute方法执行SQL 对于SELECT 查询, 使用ResultSet 对象处理返回结果 // 插入操作 Statement *stmt conn-createStatement(“ insert into Dept(Deptno,Dname, Loc) values (1, ‘ACCOUNTS’, ‘ZONE1’ ”); stmt-executeUpdate(); conn-terminateStatement(stmt); // 关闭查询, 释放资源使用绑定参数的DML数据操作语句示例 Statement *stmt conn-createStatement(“ insert into Emp(EmpNo,Ename) values(:1, :2) ”); //1 and 2 are bind placeholders int empno 2; string empname “JOHN W”; //first parameter is bind position, second is value stmt-setInt(1, empno); stmt-setString(2, empname); stmt-executeUpdate(); 执行SELECT查询并处理结果 Statement *stmt conn-createStatement(“select Empno, Ename, Sal from Emp where Hiredate :1”); //automatically converted to Date stmt-setString(1, “01-JAN-1987”); //executeQuery returns a ResultSet ResultSet *rs stmt-executeQuery(); //ResultSet::next fetches rows and returns FALSE //when no more rows while (rs-next() true) { //get values using the getXXX methods of ResultSet empno rs-getInt(1); empname rs-getString(2); empsalary rs-getFloat(3); } stmt-closeResultSet(rs);//to free resources 2 OCCI在项目中的使用 2.1 OCCI单独封装为一个类文件OCCIOP #pragma once #define _GLIBCXX_USE_CXX11_ABI 0 #include string #include occi.h #include SeckKeyNodeInfo.h using namespace std; using namespace oracle::occi;class OCCIOP { public:OCCIOP();~OCCIOP();// 初始化环境连接数据库bool connectDB(string user, string passwd, string connstr);// 得到keyID - 根据实际业务需求封装的小函数int getKeyID();bool updataKeyID(int keyID);bool writeSecKey(NodeSecKeyInfo *pNode);void closeDB();private:// 获取当前时间, 并格式化为字符串string getCurTime();private:Environment* m_env;Connection* m_conn; }; 2.2 在ServerOP中作为私有成员 #pragma once #include map #include TcpServer.h #include Message.pb.h #include OCCIOP.h #include SecKeyShm.h // 处理客户端请求 class ServerOP { public:enum KeyLen {Len1616, Len2424, Len3232};ServerOP(string json);void startServer();static void* working(void* arg);friend void* workHard(void* arg);string seckeyAgree(RequestMsg* reqMsg);~ServerOP();private:string getRandKey(KeyLen len);private:string m_serverID; string m_dbUser;string m_dbPwd;string m_dbConnStr;unsigned short m_port;mappthread_t, TcpSocket* m_list;TcpServer *m_server NULL;// 创建数据库实例对象因为在多处进行了使用因此设置为成员OCCIOP m_occi;SecKeyShm* m_shm; };2.3 ServerOP::ServerOP(string json)中实例化进行使用 ServerOP::ServerOP(string json) {// 解析json文件, 读文件 - Valueifstream ifs(json);Reader r;Value root;r.parse(ifs, root);m_port root[Port].asInt();m_serverID root[ServerID].asString();// 数据库相关的信息m_dbUser root[UserDB].asString();m_dbPwd root[PwdDB].asString();m_dbConnStr root[ConnStrDB].asString();// 实例化一个连接oracle数据的对象m_occi.connectDB(m_dbUser, m_dbPwd, m_dbConnStr);string shmKey root[ShmKey].asString();int maxNode root[ShmMaxNode].asInt();m_shm new SecKeyShm(shmKey, maxNode); }2.4 秘钥协商过程中进行读写操作 // 将生成的新秘钥写入到数据库中 - 操作 SECKEYINFO NodeSecKeyInfo node; strcpy(node.clientID, reqMsg-clientid().data()); strcpy(node.serverID, reqMsg-serverid().data()); strcpy(node.seckey, key.data());node.seckeyID m_occi.getKeyID(); // 秘钥的IDinfo.seckeyID node.seckeyID; node.status 1;// 初始化node变量 bool bl m_occi.writeSecKey(node);
http://www.w-s-a.com/news/6617/

相关文章:

  • 怎么找淘宝客网站最新军事战况
  • 缺乏门户网站建设网页设计与制作项目教程第二版
  • 手机网站横竖屏一般做建设的是什么公司
  • 免费网站建设无广告网站开发 华景新城
  • 湖州网站制作报价西安网站开发有哪些公司
  • google 浏览器开源seo软件
  • 网站空间是什么意思自己怎样建设网站
  • 国外家装设计网站如何做软件开发
  • 凡科建站登录官网当当网网站建设策划书
  • 网站百度屏蔽关键词杭州排名优化公司
  • h5响应式网站模板下载wordpress鼠标指针
  • 摄影作品投稿网站目前最好的引流推广方法
  • 资源站源码永久dede网站搬家 空间转移的方法
  • 网站建设销售的技巧话语it培训机构
  • 自建本地网站服务器wordpress南充房产网最新楼盘最近房价
  • 郑州代做网站天津哪里能做网站
  • 网站如何做排名网站建设项目的工作分解
  • 洛阳网络建站公司网站开发主流语言
  • 广州各区正在进一步优化以下措施seo值是什么意思
  • 滨州建网站公司京东云 wordpress
  • 网站视频背景怎么做免费的网络推广有哪些
  • 申请网站怎样申请广西壮族自治区专升本业务系统
  • 写作网站哪个网站做ic外单好
  • 苏州和城乡建设局网站撸撸撸做最好的导航网站
  • 网站被同行抄袭怎么办深圳中装建设集团
  • 建站及推广瓦房店 网站建设
  • 怎么查网站是在哪里备案的广州电力建设有限公司网站
  • 做网站自己申请域名还是对方wordpress管理地址
  • 专门做二手书网站或appwordpress首页显示特定分类文章
  • 无锡网站设计厂家一建十个专业含金量排名