亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQLite > 正文

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

2020-01-31 15:11:12
字體:
來源:轉載
供稿:網友

前言

本文給大家展示的代碼實際上就是如何利用Sqlite3的參數化機制做數據插入,也可以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); 

的時候統一提交,而上面的代碼使用的臨時變量,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);

附上數據庫創建的sql語法:

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

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品欧美aⅴ在线网站| 国产丝袜精品第一页| 亚洲精品久久久久久久久| 日韩最新av在线| 亚洲视频视频在线| 91综合免费在线| 91精品国产网站| 日韩成人av在线| 亚洲国模精品一区| 日本精品免费观看| 中日韩美女免费视频网站在线观看| 色伦专区97中文字幕| 日韩人体视频一二区| 国产精品成人久久久久| 日韩精品视频在线观看网址| 亚洲国产高清自拍| 久久久亚洲福利精品午夜| www.亚洲成人| 国产精品私拍pans大尺度在线| 亚洲女人天堂网| 91精品国产成人www| 亚洲人成网站777色婷婷| 国产精品久久在线观看| 日韩av电影手机在线观看| 亚洲国产欧美一区二区三区久久| 亚洲精品国产品国语在线| 国产精品96久久久久久| 日韩国产精品亚洲а∨天堂免| 欧美劲爆第一页| 91超碰中文字幕久久精品| 久久久久久美女| 免费不卡在线观看av| 91免费高清视频| 在线观看国产精品淫| 国产日韩精品在线| 国产精品狠色婷| 日韩成人免费视频| 青青草原一区二区| 国产日韩欧美在线观看| 亚洲美女精品久久| 91网站在线免费观看| 久热精品视频在线观看| 国产成人精品一区| 国产精品亚洲激情| 亚洲欧美日韩在线一区| 色综合影院在线| 欧美激情欧美狂野欧美精品| 日本精品久久久久久久| 日韩经典中文字幕在线观看| 欧美另类暴力丝袜| 久久精品中文字幕电影| 欧美激情图片区| 国产亚洲欧洲在线| 久久亚洲精品成人| 国产一区二区香蕉| 亚洲精品乱码久久久久久按摩观| 欧美一级大胆视频| 精品丝袜一区二区三区| 日韩精品亚洲精品| 国产视频精品xxxx| 亚洲午夜av电影| 色综合久久久久久中文网| 久久久国产成人精品| 成人免费观看49www在线观看| 狠狠综合久久av一区二区小说| 国产精品久久久一区| 日韩精品高清在线观看| 亚洲成人久久久| 国产精品久久久久一区二区| 亚洲美女在线看| 精品视频中文字幕| 精品一区二区三区电影| 一个色综合导航| 国产精品18久久久久久首页狼| 国产乱人伦真实精品视频| 国产日韩欧美中文在线播放| 国产深夜精品福利| 欧美疯狂做受xxxx高潮| 在线观看日韩www视频免费| 亚洲精品一区二区久| 亚洲国产精品久久91精品| 精品无人国产偷自产在线| 国产精品专区一| 欧美激情综合亚洲一二区| 亚洲国产成人精品女人久久久| 国产精品欧美一区二区三区奶水| 狠狠色噜噜狠狠狠狠97| 国产精品免费一区二区三区都可以| 欧美性高潮床叫视频| 麻豆精品精华液| 97欧美精品一区二区三区| 欧美成人午夜激情视频| 欧美大尺度激情区在线播放| 亚洲91精品在线观看| 国产一级揄自揄精品视频| 欧美丝袜美女中出在线| 国外成人在线直播| 欧美乱大交xxxxx另类电影| 亚洲色图欧美制服丝袜另类第一页| 97超级碰在线看视频免费在线看| 国产网站欧美日韩免费精品在线观看| 久久91亚洲精品中文字幕奶水| 在线观看欧美日韩国产| 日韩在线观看免费高清完整版| 亚洲成avwww人| 久久精品亚洲94久久精品| 日韩成人av网址| 亚洲一区二区三区久久| 91高潮精品免费porn| 欧美自拍大量在线观看| 2019亚洲日韩新视频| 久久久久久久久久久久久久久久久久av| 91手机视频在线观看| 久久久精品久久久久| 国产精品久久久久久久久久ktv| 国产在线一区二区三区| 97视频在线观看视频免费视频| 揄拍成人国产精品视频| 国产欧美va欧美va香蕉在| 九九热99久久久国产盗摄| 久久久999成人| 国产精品极品美女粉嫩高清在线| 国产在线精品一区免费香蕉| 中文欧美在线视频| 成人黄色大片在线免费观看| 欧美国产日韩xxxxx| 欧美猛交ⅹxxx乱大交视频| 色婷婷亚洲mv天堂mv在影片| 在线成人激情视频| 国产精品91在线| 亚洲一区二区在线| 欧美贵妇videos办公室| 久久久久久久久久久久久久久久久久av| 欧美日韩亚洲成人| 亚洲综合精品伊人久久| 亚洲自拍另类欧美丝袜| 日韩精品在线播放| 日韩欧美亚洲一二三区| www.xxxx精品| 久精品免费视频| 国产精品劲爆视频| www.日韩视频| 亚洲人精品午夜在线观看| 亚洲福利在线播放| 亚洲精品wwwww| 国产精品一香蕉国产线看观看| 国产精品夜间视频香蕉| 亚洲第一精品久久忘忧草社区| 色婷婷av一区二区三区在线观看| 国产日韩在线免费| 午夜精品福利视频| 色av吧综合网| 中文字幕亚洲激情| 国产精品爱久久久久久久| 亚洲成人久久网| 中国人与牲禽动交精品| 国产精品揄拍500视频| 欧美成人性色生活仑片| 成人免费xxxxx在线观看| 日韩国产精品一区| 亚洲自拍偷拍第一页| 亚洲人成亚洲人成在线观看| 亚洲精品日韩久久久| 亚洲精品资源美女情侣酒店|