1. 程式人生 > >在VS2013下c++與Sqlite3的連線

在VS2013下c++與Sqlite3的連線

第一步:
       在vs2013下建立一個空的win32工程SQLite3Test,在工程的屬性-連結-輸入中新增sqlite3.lib的引用。新增新的檔案main.cpp,寫一個main函式,並編譯一下。
好,接下來把sqlite3.h/def/exp/lib通通放進SQLite3Test\SQLite3Test\目錄下,跟main.cpp在一起,如圖:

把sqlite3.dll跟生成的exe放在一起。

第二步:

       寫下原始碼:

  1. #include <iostream>
  2. #include "sqlite3.h"
  3. static std::string strName[] = {"土行孫","哪吒"
    ,"楊戩","金吒","木吒","雷震子"};
  4. int sqlite3_exec_callback(void *data, int nColumn, char **colValues, char **colNames);
  5. int sqlite3_exec_callback(void *data, int nColumn, char **colValues, char **colNames)
  6. {
  7. for (int i = 0; i < nColumn; i++)
  8. {
  9. printf("%s\t", colValues[i]);
  10. }
  11. printf("\n"
    );
  12. return 0;
  13. }
  14. int main()
  15. {
  16. sqlite3 *conn = NULL;
  17. char *err_msg = NULL;
  18. char sql[200] = "";
  19. //開啟資料庫,建立連線;
  20. if(sqlite3_open("test.db",&conn) != SQLITE_OK)
  21. {
  22. printf("無法開啟\n");
  23. }
  24. //執行SQL,建立一張表;
  25. sprintf(sql,"CREATE TABLE test_for_cpp(id int,name varchar(20),age int)");
  26. if(sqlite3_exec(conn,sql,NULL,NULL
    ,&err_msg) != SQLITE_OK)
  27. {
  28. std::string strErrMsg(err_msg);
  29. std::string::size_type pos = 0;
  30. pos = strErrMsg.find("already exists");
  31. if(std::string::npos != pos)
  32. {
  33. //資料表已存在,刪除表中資料;
  34. sprintf(sql,"delete from test_for_cpp");
  35. if(sqlite3_exec(conn,sql,NULL,NULL,&err_msg) != SQLITE_OK)
  36. {
  37. printf("操作失敗,錯誤程式碼:%s",err_msg);
  38. return -1;
  39. }
  40. }
  41. else
  42. {
  43. printf("操作失敗,錯誤程式碼:%s",err_msg);
  44. return -1;
  45. }
  46. }
  47. //插入資料;
  48. int nColumn = sizeof(strName) / sizeof(strName[0]);
  49. for(int index = 0;index < nColumn;index++)
  50. {
  51. sprintf(sql, "INSERT INTO test_for_cpp (id, name, age) VALUES (%d, '%s', %d)", index, strName[index].c_str(), 20 + index);
  52. if (sqlite3_exec(conn, sql, NULL, NULL, &err_msg) != SQLITE_OK)
  53. {
  54. printf("操作失敗,錯誤程式碼: %s", err_msg);
  55. return -1;
  56. }
  57. }
  58. // 查詢;
  59. sprintf(sql, "SELECT * FROM test_for_cpp");
  60. sqlite3_exec(conn, sql, &sqlite3_exec_callback, 0, &err_msg);
  61. //關閉連線;
  62. if(sqlite3_close(conn) != SQLITE_OK)
  63. {
  64. printf("無法關閉,錯誤程式碼:%s\n",sqlite3_errmsg(conn));
  65. return -1;
  66. }
  67. return 0;
  68. }
sqlite庫檔案等下載地址:https://download.csdn.net/download/ss33sss/10524228