- 在结构体中,都用字符串表示,因为整数,浮点数不能表示为NULL;
- 在表中,浮点数据都用int类型表示,例如:1.25元,在数据库中,应表示为125分。
-
/project/idc1/c/obtmindtodb2.cpp
- 若目录里面没有文件,则不用连接数据库,浪费资源。
- CDir和CFile的共同使用
-
if (Dir.OpenDir(pathname,"*.xml")==false) while (true) { // 读取目录,得到一个数据文件名。 if (Dir.ReadDir()==false) break; 。 。 if (File.Open(Dir.m_FullFileName,"r")==false) //读取一个文件里的每一行数据。(以<endl/>结尾) while (true) { if (File.FFGETS(strBuffer,1000,"<endl/>")==false) break; } }
- 数据的拼接和分割
GetXMLBuffer(strBuffer,"t",tmp,10); if (strlen(tmp)>0) //右往左 snprintf(stzhobtmind.t,10,"%d",(int)(atof(tmp)*10)); //左往右 GetXMLBuffer(strBuffer,"obtid",stzhobtmind.obtid,10);
2./project /public/db/mysql/selecttable
sqlstatement stmt(&conn); // 操作SQL语句的对象。 int iminid,imaxid; // 查询条件最小和最大的id。 // 准备查询表的SQL语句。 stmt.prepare("\ select id,name,weight,date_format(btime,'%%Y-%%m-%%d %%H:%%i:%%s') from girls where id>=:1 and id<=:2"); /* 注意事项: 1、如果SQL语句的主体没有改变,只需要prepare()一次就可以了; 2、结果集中的字段,调用bindout()绑定变量的地址; 3、bindout()方法的返回值固定为0,不用判断返回值; 4、如果SQL语句的主体已改变,prepare()后,需重新用bindout()绑定变量; 5、调用execute()方法执行SQL语句,然后再循环调用next()方法获取结果集中的记录; 6、每调用一次next()方法,从结果集中获取一条记录,字段内容保存在已绑定的变量中。 */ // 为SQL语句绑定输入变量的地址,bindin方法不需要判断返回值。 stmt.bindin(1,&iminid); stmt.bindin(2,&imaxid); // 为SQL语句绑定输出变量的地址,bindout方法不需要判断返回值。 默认第一列输出为1,第二列为2.... stmt.bindout(1,&stgirls.id); stmt.bindout(2, stgirls.name,30); stmt.bindout(3,&stgirls.weight); stmt.bindout(4, stgirls.btime,19); iminid=1; // 指定待查询记录的最小id的值。 imaxid=3; // 指定待查询记录的最大id的值。 // 执行SQL语句,一定要判断返回值,0-成功,其它-失败。 // 失败代码在stmt.m_cda.rc中,失败描述在stmt.m_cda.message中。 if (stmt.execute() != 0) { printf("stmt.execute() failed.\n%s\n%s\n",stmt.m_sql,stmt.m_cda.message); return -1; } // 本程序执行的是查询语句,执行stmt.execute()后,将会在数据库的缓冲区中产生一个结果集。 while (true) { memset(&stgirls,0,sizeof(struct st_girls)); // 结构体变量初始化。 // 从结果集中获取一条记录,一定要判断返回值,0-成功,1403-无记录,其它-失败。 // 在实际开发中,除了0和1403,其它的情况极少出现。 if (stmt.next()!=0) break; // 把获取到的记录的值打印出来。 printf("id=%ld,name=%s,weight=%.02f,btime=%s\n",stgirls.id,stgirls.name,stgirls.weight,stgirls.btime); } // 请注意,stmt.m_cda.rpc变量非常重要,它保存了SQL被执行后影响的记录数。 printf("本次查询了girls表%ld条记录。\n",stmt.m_cda.rpc);
- 插入数据错误,分析错误码。
if (stmt.execute()!=0) { // 1、失败的情况有哪些?是否全部的失败都要写日志? // 答:失败的原因主要有二:一是记录重复,二是数据内容非法。 // 2、如果失败了怎么办?程序是否需要继续?是否rollback?是否返回false? // 答:如果失败的原因是数据内容非法,记录日志后继续;如果是记录重复,不必记录日志,且继续。 if (stmt.m_cda.rc!=1062) { logfile.Write("Buffer=%s\n",strBuffer); logfile.Write("stmt.execute() failed.\n%s\n%s\n",stmt.m_sql,stmt.m_cda.message); } }
标签:实战,语句,数据库,stmt,stgirls,细节,bindout,SQL,id From: https://www.cnblogs.com/yzh2022/p/16867720.html