cpp: SQLite
lib /def:sqlite3.def /machine:ix86
如果程序文件编码是ANSI时还需要解决中文读写乱码问题
sqlite3* sql = NULL; // 一个打开的数据库实例 const char* path = "geovindu";//某个sql文件的路径 // 根据文件路径打开数据库连接。如果数据库不存在,则创建。 // 数据库文件的路径必须以C字符串传入。 int result = sqlite3_open_v2(path, &sql, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_SHAREDCACHE, NULL); if (result == SQLITE_OK) { std::clog << "打开数据库连接成功\n"; } else { std::clog << "打开数据库连接失败\n"; } sqlite3_stmt* stmt = NULL; //stmt语句句柄 和文件编码有关系 //添加 插入中文时,需要转换 /**/ // insert_data(00010, "geovindu", const_cast<char *>(Unicode2Utf8(_T("测测测测测")).c_str())); //string name=Unicode2Utf8(_T("科学")).c_str(); const char* sqlSentenceInsert = "INSERT INTO BookKindList(BookKindName,BookKindCode,BookKindParent) VALUES('涂聚文', 'C0012',1);"; //SQL语句 //进行插入前的准备工作——检查语句合法性 //-1代表系统会自动计算SQL语句的长度 int resultInsert = sqlite3_prepare_v2(sql, sqlSentenceInsert, -1, &stmt, NULL); if (resultInsert == SQLITE_OK) { std::clog << "添加数据语句OK\n"; //执行该语句 sqlite3_step(stmt); } else { std::clog << "添加数据语句有问题\n"; } //清理语句句柄,准备执行下一个语句 sqlite3_finalize(stmt); //查询 const char* sqlSentence = "SELECT BookKindID,BookKindName,BookKindCode,BookKindParent FROM BookKindList;"; //SQL语句 //sqlite3_stmt* stmt = NULL; // stmt语句句柄 //进行查询前的准备工作——检查语句合法性 //-1代表系统会自动计算SQL语句的长度 int resultSelect = sqlite3_prepare_v2(sql, sqlSentence, -1, &stmt, NULL); if (resultSelect == SQLITE_OK) { std::clog << "查询语句OK\n"; std::string BookKindName, BookKindCode; // 每调一次sqlite3_step()函数,stmt语句句柄就会指向下一条记录 while (sqlite3_step(stmt) == SQLITE_ROW) { // 取出第0列字段的值 int BookKindID = sqlite3_column_int(stmt, 0); // 取出第1列字段的值 const //const unsigned char* BookKindName2 =sqlite3_column_text(stmt, 1); char* a = (char*)sqlite3_column_text(stmt, 1);//取出的数据 //string bookname = string(BookKindName); //BookKindName.append(char*)sqlite3_column_blob(stmt, 1), sqlite3_column_bytes(stmt, 1)); //2 //const unsigned char* BookKindCode2 = sqlite3_column_text(stmt, 2); char* b = (char*)sqlite3_column_text(stmt,2); //BookKindCode.append((char*)sqlite3_column_blob(stmt, 2) , sqlite3_column_bytes(stmt, 2)); //char* du = Gb2Utf(a); string du = string(a); string du1 = string(b); //wstring reasltutf8 = UTF8ToUnicode(du); // 如果程序文件编码是ANSI 需要这样转换 //wstring reasltutf9 = UTF8ToUnicode(du1); //wstring reasltutfname = UTF8ToUnicode(BookKindName); //wstring resaltutfcode = UTF8ToUnicode(BookKindCode); //locale loc("chs"); //wcout.imbue(loc); //3 int BookKindParent = sqlite3_column_int(stmt, 3); //wcout <<"du:"<< reasltutf8<<" ,Name:"<< reasltutfname << endl; //输出相关查询的数据 //std::clog << "BookKindName = "<<UTF8ToUnicode(BookKindName) << ", BookKindID = " << BookKindID << ",BookKindCode=" << UTF8ToUnicode(BookKindCode) << ",BookKindParent="<< BookKindParent <<endl; std::cout << "BookKindName = " << du << ", BookKindID = " << BookKindID << ",BookKindCode=" << du1 << ",BookKindParent=" << BookKindParent << endl; //wcout.clear(); } } else { std::clog << "查询语句有问题"; } //清理语句句柄,准备执行下一个语句 sqlite3_finalize(stmt); // //关闭数据库 sqlite3_finalize(stmt); if (sql) { sqlite3_close_v2(sql); sql = nullptr; }
vs 2022 管理权限执行程序设置
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)