婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQLite3的綁定函數(shù)族使用與其注意事項詳解

SQLite3的綁定函數(shù)族使用與其注意事項詳解

熱門標簽:奧維地圖標注字體大小修改 電話機器人錄音師薪資 智能電銷機器人教育 江西穩(wěn)定外呼系統(tǒng)供應商 孝感銷售電銷機器人廠家 高德地圖標注電話怎么沒了 無錫梁溪公司怎樣申請400電話 中國地圖標注省份用什么符號 北京智能外呼系統(tǒng)供應商家

前言

本文給大家展示的代碼實際上就是如何利用Sqlite3的參數(shù)化機制做數(shù)據(jù)插入,也可以update操作,就看你怎么玩了,這里只列出代碼,然后說一些注意事項。

下面的代碼,有一個問題,插入后的東西一定是:

INSERT INTO "work" VALUES('鉿','鉿鉿鉿鉿鉿',NULL,NULL,NULL,NULL,'鉿鉿鉿鉿鉿',NULL,NULL,110.0,1.0,108.9,NULL,NULL,'鉿鉿鉿鉿鉿',NULL,NULL,NULL,'鉿鉿鉿鉿鉿',NULL,NULL,NULL);

看看有問題的代碼:

sqlite3_stmt *stmt;
 CString sql = "insert into work values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
 int rc = sqlite3_prepare_v2(db, sql.GetString(), -1, stmt, NULL);

 if(rc != SQLITE_OK)
 {
 MessageBox("sqlite3_prepare_v2 Failed!");
 return;
 }

 count = 0;
 p_wnd = PrevWnd;

 while(count++  ID_TOTALCOUNT)
 {
 CString DbStr;
 
 p_wnd = CWnd::GetNextDlgTabItem(p_wnd, FALSE); 
 if(p_wnd == NULL)
 {
  return;
 }

 p_wnd->GetWindowText(DbStr);

 do
 {
  if(!DbStr.GetLength())
  {
  rc = sqlite3_bind_null(stmt, count);
  break;
  }

  //日期相關
  if( count == ID_CHUDANRIQI || 
  count == ID_CHUFARIQI || 
  count == ID_HUANKUANRIQI || 
  count == ID_HUOLIRIQI)
  {
  CDateTimeCtrl *TimeCtl = (CDateTimeCtrl *)p_wnd;  
  CString time = DateTimeToString(*TimeCtl);

  rc = sqlite3_bind_text(stmt, count, time.GetString(), time.GetLength(), SQLITE_STATIC);
  break;
  }
  else
  {
  //金錢相關的處理real類型
  if( count == ID_BAOXIANJINE || 
   count == ID_YONGJINBILV || 
   count == ID_JINGBAOFEI || 
   count == ID_HUANKUANJINE || 
   count == ID_LIRUNBILV || 
   count == ID_LIRUNJINE)
  {
   double tMoney = 0.0;
   int rtn = sscanf_s(DbStr.GetString(), "%lf", tMoney);

   ASSERT(rtn == 1);

   rc = sqlite3_bind_double(stmt, count, tMoney);
  }
  else
  {
   char *str = (char *)DbStr.GetString();
   int c = strlen(str);
   int c1 = DbStr.GetLength();

   rc = sqlite3_bind_text(stmt, count, DbStr.GetString(), -1/*DbStr.GetLength()*/, SQLITE_STATIC);
  }
  }
 }while(0);

 if(rc != SQLITE_OK)
 {
  CString ErrStr = sqlite3_errstr(rc);
  MessageBox(ErrStr);

  return;
 }
 }

 rc = sqlite3_step(stmt); 

 if(rc != SQLITE_DONE)
 {
 if(rc == SQLITE_ERROR)
 {
  CString DbErr;
  DbErr.Format("Sql Insert failed, %s", sqlite3_errmsg(db));

  MessageBox(DbErr);
 }
 else
 {
  MessageBox("sqlite3_step Failed!");
 } 
 }

 sqlite3_finalize(stmt);

為什么呢?

因為,sqlite3_bind_text綁定的text,需要在做:

rc = sqlite3_step(stmt); 

的時候統(tǒng)一提交,而上面的代碼使用的臨時變量,rc = sqlite3_step(stmt);的時候,早就不存在了。因此亂碼也是正常的。

修改如下:

sqlite3_stmt *stmt;
 CString sql = "insert into work values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
 int rc = sqlite3_prepare_v2(db, sql.GetString(), -1, stmt, NULL);

 if(rc != SQLITE_OK)
 {
 MessageBox("sqlite3_prepare_v2 Failed!");
 return;
 }

 count = 0;
 p_wnd = PrevWnd;

 CString DbStr[ID_TOTALCOUNT + 1];

 while(count++  ID_TOTALCOUNT)
 {
 DbStr[count].Empty();
 
 p_wnd = CWnd::GetNextDlgTabItem(p_wnd, FALSE); 
 if(p_wnd == NULL)
 {
  return;
 }

 p_wnd->GetWindowText(DbStr[count]);

 do
 {
  if(!DbStr[count].GetLength())
  {
  rc = sqlite3_bind_null(stmt, count);
  break;
  }

  //日期相關
  if( count == ID_CHUDANRIQI || 
  count == ID_CHUFARIQI || 
  count == ID_HUANKUANRIQI || 
  count == ID_HUOLIRIQI)
  {
  CDateTimeCtrl *TimeCtl = (CDateTimeCtrl *)p_wnd;  
  CString time = DateTimeToString(*TimeCtl);

  DbStr[count] = time;

  rc = sqlite3_bind_text(stmt, count, time.GetString(), time.GetLength(), SQLITE_STATIC);
  }
  else
  {
  //金錢相關的處理real類型
  if( count == ID_BAOXIANJINE || 
   count == ID_YONGJINBILV || 
   count == ID_JINGBAOFEI || 
   count == ID_HUANKUANJINE || 
   count == ID_LIRUNBILV || 
   count == ID_LIRUNJINE)
  {
   double tMoney = 0.0;
   int rtn = sscanf_s(DbStr[count].GetString(), "%lf", tMoney);

   ASSERT(rtn == 1);

   rc = sqlite3_bind_double(stmt, count, tMoney);
  }
  else
  {
   rc = sqlite3_bind_text(stmt, count, DbStr[count].GetString(), DbStr[count].GetLength(), SQLITE_STATIC);
  }
  }
 }while(0);

 if(rc != SQLITE_OK)
 {
  CString ErrStr = sqlite3_errstr(rc);
  MessageBox(ErrStr);

  return;
 }
 }

 rc = sqlite3_step(stmt); 

 if(rc != SQLITE_DONE)
 {
 if(rc == SQLITE_ERROR)
 {
  CString DbErr;
  DbErr.Format("Sql Insert failed, %s", sqlite3_errmsg(db));

  MessageBox(DbErr);
 }
 else
 {
  MessageBox("sqlite3_step Failed!");
 } 
 }

 sqlite3_finalize(stmt);

附上數(shù)據(jù)庫創(chuàng)建的sql語法:

sqlite> .dump work
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE work (baodanhao text unique primary key , chudanriqi text,qudao text,lianxiren text,xiaoshou text,beibaorenxingming text,chufar
iqi text,baoxianpinpai text,baoxianjihua text,baoxianjine real,yongjinbilv real,jingbaofei real,huankuanfangshi text,haikuanjine real,huanku
anriqi text,shifouquane text,lirunbilv real,lirunjine real,huoliriqi text,fapiaojisong text,shifubaoxiangongsi text,beizhu text);

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • SQLite3中的日期時間函數(shù)使用小結
  • 為SQLite3提供一個ANSI到UTF8的互轉函數(shù)

標簽:荊州 臨滄 泰州 海北 那曲 齊齊哈爾 通化 阜陽

巨人網(wǎng)絡通訊聲明:本文標題《SQLite3的綁定函數(shù)族使用與其注意事項詳解》,本文關鍵詞  SQLite3,的,綁定,函數(shù),族,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQLite3的綁定函數(shù)族使用與其注意事項詳解》相關的同類信息!
  • 本頁收集關于SQLite3的綁定函數(shù)族使用與其注意事項詳解的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产日韩成人精品| 自拍av一区二区三区| 日韩福利电影在线| 久久久国产午夜精品| 日韩一区二区三区在线| 欧美日韩不卡一区| 色偷偷久久一区二区三区| 国产盗摄女厕一区二区三区| 精品一区二区三区香蕉蜜桃 | 婷婷开心激情综合| 日韩一区在线免费观看| 国产欧美日韩在线| 久久久国产综合精品女国产盗摄| 欧美成人精品3d动漫h| 7777女厕盗摄久久久| 欧美艳星brazzers| 欧美性极品少妇| 欧美在线免费视屏| 欧美日韩你懂的| 欧美视频一区二区三区四区| 色狠狠综合天天综合综合| 色综合久久99| 色婷婷久久久亚洲一区二区三区| 91老师片黄在线观看| 在线观看欧美黄色| 91精品国产免费久久综合| 日韩欧美国产电影| 国产色婷婷亚洲99精品小说| 国产精品人妖ts系列视频| 亚洲摸摸操操av| 亚洲成人黄色影院| 奇米一区二区三区av| 激情偷乱视频一区二区三区| 国产电影一区二区三区| 色综合激情久久| 欧美人牲a欧美精品| 欧美一卡2卡三卡4卡5免费| 91麻豆精品国产91久久久 | 美国欧美日韩国产在线播放| 日本不卡高清视频| 麻豆国产欧美一区二区三区| 精品系列免费在线观看| 从欧美一区二区三区| 在线免费亚洲电影| 日韩一区二区三区观看| 欧美sm极限捆绑bd| 国产精品国产三级国产普通话99| 一区二区在线电影| 国产麻豆9l精品三级站| 在线观看视频91| 久久久综合激的五月天| 一区免费观看视频| 麻豆国产欧美一区二区三区| 成人av网站在线观看| 91精品国产一区二区| 五月天亚洲婷婷| 九色porny丨国产精品| av一区二区三区在线| 在线成人av网站| 国产精品你懂的| 日本sm残虐另类| 91色婷婷久久久久合中文| 欧美性猛交一区二区三区精品| 久久夜色精品国产噜噜av| 日韩美女在线视频| 亚洲女厕所小便bbb| 激情久久久久久久久久久久久久久久| av色综合久久天堂av综合| 91精品国产一区二区三区蜜臀| 国产精品成人在线观看| 免费不卡在线观看| 91看片淫黄大片一级| 精品国产91亚洲一区二区三区婷婷| 中文字幕精品在线不卡| 麻豆高清免费国产一区| 欧美视频中文一区二区三区在线观看| 久久久国际精品| 日韩成人一级大片| 91精品1区2区| 欧美激情一二三区| 国产原创一区二区三区| 在线不卡a资源高清| 亚洲综合清纯丝袜自拍| 99国产麻豆精品| 中文字幕第一页久久| 国产伦精品一区二区三区免费迷| 欧美一区二区在线免费观看| 亚洲综合偷拍欧美一区色| av高清不卡在线| 99视频热这里只有精品免费| 国产日产欧美一区| 韩国v欧美v日本v亚洲v| 日韩一区二区在线观看| 天天射综合影视| 欧美吞精做爰啪啪高潮| 亚洲国产精品嫩草影院| 欧美亚洲动漫精品| 亚洲在线视频免费观看| 在线免费视频一区二区| 亚洲一区二区五区| 色乱码一区二区三区88| 亚洲免费观看视频| 欧美综合色免费| 亚洲午夜精品一区二区三区他趣| 色噜噜狠狠成人网p站| 亚洲大片免费看| 9191成人精品久久| 亚洲福利视频导航| 欧美成人一区二区| 欧美色精品在线视频| 久久综合久久综合久久综合| 天堂成人免费av电影一区| 亚洲综合在线免费观看| 99精品国产99久久久久久白柏| 欧美精品 国产精品| 亚洲va国产天堂va久久en| 欧美美女黄视频| 日韩精品一二三四| 欧美精品123区| 国产尤物一区二区| 成人高清免费观看| 中文字幕精品综合| 91亚洲精品一区二区乱码| 亚洲乱码国产乱码精品精的特点| 在线亚洲高清视频| 韩国欧美国产一区| 18成人在线视频| 欧美videos大乳护士334| 国产美女久久久久| 亚洲免费观看高清完整版在线观看 | 五月婷婷综合网| 欧美不卡一区二区三区四区| 成人深夜在线观看| 亚洲一区二区三区小说| 欧美大度的电影原声| 国产99久久久国产精品| 国产精品污污网站在线观看| 精品视频在线免费看| 国产精品亚洲午夜一区二区三区 | 麻豆精品一区二区三区| 国产婷婷精品av在线| 在线免费观看日本欧美| 久久99精品国产.久久久久久| 一区免费观看视频| 欧美大肚乱孕交hd孕妇| 91福利国产精品| 日本不卡在线视频| 国产精品久久久久毛片软件| 99久久免费精品高清特色大片| 午夜成人免费电影| 亚洲欧美自拍偷拍| 欧美美女一区二区三区| www.欧美亚洲| 欧美bbbbb| 亚洲成人黄色影院| 亚洲欧洲精品天堂一级| 精品精品国产高清一毛片一天堂| 国产91精品入口| 另类人妖一区二区av| 亚洲综合色成人| 亚洲欧洲日韩一区二区三区| 精品国产伦一区二区三区观看体验| 欧美色中文字幕| 91麻豆精品视频| 国产丶欧美丶日本不卡视频| 欧美乱妇15p| 欧美影视一区二区三区| 色老汉av一区二区三区| 99久久国产综合精品女不卡| 国产精品一区二区视频| 久久99精品久久久久久| 日本女人一区二区三区| 石原莉奈一区二区三区在线观看| 一区二区三区精品在线观看| 国产精品传媒入口麻豆| 国产精品午夜久久| 国产精品少妇自拍| 国产精品高潮呻吟| 国产精品理伦片| 日韩毛片精品高清免费| 亚洲男同性恋视频| 亚洲午夜一二三区视频| 亚洲午夜视频在线观看| 一区二区激情小说| 首页综合国产亚洲丝袜| 午夜精品久久久久久| 欧美96一区二区免费视频| 日本不卡一区二区三区| 韩国精品免费视频| 成人丝袜18视频在线观看| 91麻豆国产自产在线观看| 国产精品一区二区你懂的| 国产精品18久久久久| 性感美女久久精品| 久久成人久久鬼色| 懂色av中文字幕一区二区三区| 99re成人在线| 5566中文字幕一区二区电影| 26uuu国产在线精品一区二区| 久久久久久久综合日本|