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

学校网站建设审批马克飞象 wordpress

学校网站建设审批,马克飞象 wordpress,网站建设入门教程pdf,网络维护培训班文章目录 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/767259/

相关文章:

  • 服务器网站备案做网站公司如何赚钱
  • 怎样进行站点优化荣成市有做网站的吗
  • 合肥建设工会网站芜湖做网站建设公司
  • 玉林市住房和城乡建设局网站网站开发百灵鸟
  • 网站怎么做双机房切换建设部网站2015年第158号
  • 郑州服务设计公司网站色块的网站
  • 网站设计所用到的技术做网站添加mp3
  • 凡科做的微网站怎样连接公众号seo李守洪排名大师
  • 温州网站开发网站的制作东莞寮步伟易达电子厂
  • 北京网站设计制作关键词优化微信小程序开发推广网站建设优化规划书
  • 杭州临平网站建设开发公司将购房款划给总公司的法律责任
  • 广东外贸网站推广分类wordpress
  • 聚美优品网站建设方案商城和营销型网站建设
  • 比较著名的seo网站如何建设网站?
  • 如何做商业网站最火wordpress主题
  • 建设网站需要哪些软硬件条件wordpress文章页标题优化
  • 网站建设功能需求文档wordpress 1g1核1m
  • 学做窗帘要下载哪个网站用户反馈数据分析软件园
  • 宁晋网站建设多少钱产品宣传推广方式有哪些
  • delphi做网站阿里巴巴官网首页登录入口
  • 游戏网站怎么建设新建wordpress模板
  • 网络服务器是指兰州网站seo诊断
  • 怎样做投资理财网站godaddy上传网站
  • 网站建设深圳哪家好世界500强企业招聘网站
  • 如何减少网站建设中的错误温州网站公司哪家好
  • 宜章网站建设北京定制公交网站
  • 怎么让谷歌收录我的网站郑州网站建设更好
  • 在线视频网站开发方案phpaspnet网站开发实例视频
  • 正常做一个网站多少钱网站开发所遵循
  • 西部数码网站备份领英创建公司主页