首页 > 数据库 >数据库项目实战中的一些细节

数据库项目实战中的一些细节

时间:2022-11-08 19:26:19浏览次数:42  
标签:实战 语句 数据库 stmt stgirls 细节 bindout SQL id

  • 在结构体中,都用字符串表示,因为整数,浮点数不能表示为NULL;
  • 在表中,浮点数据都用int类型表示,例如:1.25元,在数据库中,应表示为125分。
  1. /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

相关文章

  • 数据库冗余是否必要
    我们在这里假设认为遵守数据库设计的范式,不要冗余的为正方:认为设计数据库设计需要设计一些适当冗余的为反方:希望大家能结合自己设计经验,展开积极的讨论:下面是我举的一个......
  • 分析型数据库
    软件简介TBase具备高性能可扩展的分布式事务能力,支持RC和RR两种隔离级别;通过安全、管理、审计三权分立体系,提供全方位的数据安全保证机制;支持高性能分区表,可使得数据检......
  • mysql 5.7安装及使用binlog日志恢复数据库
    目录mysql5.7安装及使用binlog日志恢复数据库binlog日志介绍安装mysql5.7开启Binlog日志查看binlog日志状态和内容通过Binlog恢复数据清理MySQL的binlog日志自动删除手动......
  • Python 生成MySQL数据库的表结构到word文档
    原理:读取系统表的数据,调用python-docx库生成word文档。importpymysqlfromdocximportDocumentfromdocx.sharedimportInchesdocument=Document()document.a......
  • 【AGC】云数据库Server调用接口报错“2016”问题分析
     问题背景: 开发者在服务器端的服务中集成云数据库服务的ServerSDK就可以在服务器上直接管理云侧数据库中的数据,调用它提供的接口,完成相关服务功能开发。可是有些开发者......
  • Redis数据结构实战演练,看看微博、微信、购物车、抽奖小程序是如何使用的?
    大家都知道,现在只要是个系统就会有缓存的存在,而且几乎所有的系统都离不开Redis,可见Redis在现在系统的重要性。所以,今天我们就来聊一下Redis,当然主要聊聊Redis在不同业务场景......
  • go-zero微服务实战系列(十一、大结局)
    本篇是整个系列的最后一篇了,本来打算在系列的最后一两篇写一下关于k8s部署相关的内容,在构思的过程中觉得自己对k8s知识的掌握还很不足,在自己没有理解掌握的前提下我觉得也很......
  • 极简springboot+springdataJPA的使用,连接数据库
    1、首先在springboot的基础上引入maven依赖:一个mysql的驱动,一个整合的JPA使用包<!--https://mvnrepository.com/artifact/mysql/mysql-connector-java--><dep......
  • odoo备份数据库无法备份问题解决:Command 'pg_dump' not found.
    背景景:ubuntu20.04上用命令安装postgresql后,odoo备份数据库报如下错误安装命令:sudoapt-getinstallpostgresql默认安装:14版本的pg错误代码如下:  问题原因:是pg......
  • Oracle、MySQL等数据库故障处理优质文章分享 | 10月汇总
    墨天轮社区于9月起持续举办【聊聊故障处理那些事儿】DBA专题征文活动,每月进行评优发奖,鼓励大家记录工作中遇到的数据库故障处理过程,不仅用于自我复盘与分析,同时也能帮助其......