发布网友 发布时间:2022-04-23 08:59
共2个回答
热心网友 时间:2022-06-18 18:26
步骤1,
先将csv,excel等表格的数据复制到文本文件中,如文本文件的路径为 FilePath;
步骤2,
执行以下代码
#include <afx.h>
#include "sqlite3.h"
#include <iostream>
using namespace std;
char* G2U(const char* gb2312) //unicode转换成utf—8
{
int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);
wchar_t* wstr = new wchar_t[len+1]; memset(wstr, 0, len+1);
MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);
len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
char* str = new char[len+1]; memset(str, 0, len+1);
WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);
if(wstr) delete[] wstr;
return str;
}
int main() {
int i,j;
CStdioFile mReadFile2; CString str1;
CString str[9]; //存储每一条记录截取后的值,长度可根据字段值自由定义
int MCC,MNC,LAC,PRECISION; //定义你所要插入的字段
float O_LNG,O_LAT;
char *sql,*zErrMsg;
sqlite3 *db;
int result=sqlite3_open("*.db",&db);//打开数据库
if (result!=0)
{
cout<<"数据库打开失败"<<endl;
return 0;
}
sql = "CREATE TABLE LOCData(MCC INTEGER,MNC INTEGER, LAC INTEGER,O_LNG RAEL,\
O_LAT RAEL,PRECISION INTEGER,ADDRESS VARCHAR(40),REGION VARCHAR(20),CITY VARCHAR(10));";//根据需要创建表
sqlite3_exec(db,sql,0,0,&zErrMsg);
mReadFile2.Open(FilePath,CFile::modeRead | CFile::typeText);
j=0;
while(mReadFile2.ReadString(str1) == TRUE) //读取txt中的一行数据
{
mReadFile2.ReadString(str1);
for (i=0;i<9;i++)
{
if (i!=8)
{
str[i]=str1.Left(str1.Find(" "));//以tab键为标记截取不同字段
str1.Delete(0,str[i].GetLength()+1);
}
else
{
str[i]=str1;//最后一个直接复值
}
}
MCC=atoi(str[0]);
MNC=atoi(str[1]);
LAC=atoi(str[2]);
O_LNG=atof(str[3]);
O_LAT=atof(str[4]);
PRECISION=atoi(str[5]); //转换每个字段的类型
sql=sqlite3_mprintf("INSERT INTO LOCData
VALUES(%d,%d,%d,%f,%f,%d,'%s','%s','%s');",MCC,MNC,LAC,O_LNG,O_LAT,PRECISION, G2U(str[6]),G2U(str[7]),G2U(str[8]));//构造sql语句向要表中输入内容
j++;
cout<<j;
if(sqlite3_exec(db,sql,0,0,&zErrMsg)!=0)//执行
cout<<zErrMsg<<endl;
else
cout<<"插入成功"<<endl;
}
mReadFile2.Close();
cout<<"转换结束。。。。。。。。。。";
}
热心网友 时间:2022-06-18 18:26
下载一个软件