首页| 论坛| 消息

标题:用QSqlQuery向数据库中批量添加数据异常慢!
作者:snowfield
日期:2012-01-08 07:54
内容:

我希望从文本文件(filename2)中批量读入数据写入数据库(filename1)中,但不知为何,速度出奇的慢。500个记录(读取的文本数据为24k左右,生成的数据库为500K)竟然用了一分多钟!请帮忙看看我的代码存在什么问题?有什么好的办法可以快速批量向数据库中导入数据?谢谢!


QSqlDatabase dbconn = QSqlDatabase::addDatabase("QSQLITE");
dbconn.setDatabaseName(filename1); //数据库文件
QSqlQuery query;


query.exec(QString("create table test(id varchar, e varchar, t varchar, c varchar);"));


QFile file(filename2);//从文本文件中读取数据


if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
int i = 0;


QTextStream in(&file);
QStringList lines = in.readAll().split("\n");
query.prepare("insert into test values(?, ?, ?, ?)");
QVariantList v1, v2, v3, v4;


while(i < 500){
QString line = lines[i];
QStringList s = line.split("\t");
v1


#1 回 楼主(snowfield) 的帖子 [wxj120bw 01-08 10:42]
QStringList lines = in.readAll().split("\n");
..........
QString line = lines;//file.readLine();
代码是连续的吗 上面lines的定义在那?
#2 [snowfield 01-08 14:43]
代码是连续的,调试通过的。QStringList lines = in.readAll().split("\n");这句就是定义加赋值吗?
#3 回 2楼(snowfield) 的帖子 [jdwx 01-08 14:52]
你有看过程序执行过后数据库里的内容吗?
while(i < 500){
QString line = lines;//file.readLine();
QStringList s = line.split("\t");
v1
#4 Re:回 2楼(snowfield) 的帖子 [snowfield 01-08 20:07]
引用第3楼jdwx于2012-01-08 14:52发表的 回 2楼(snowfield) 的帖子 :
你有看过程序执行过后数据库里的内容吗?
while(i < 500){
QString line = lines;//file.readLine();
QStringList s = line.split("\t");
v1
#5 回 4楼(snowfield) 的帖子 [jdwx 01-08 20:45]
真能通过编译吗?
line是QString
lines是QStringList
QString line = lines;???

<< 1 2 3 >> (1/3)

回复 发表
主题 版块