QSqlQuery sq(db);
sq.prepare( strCreateTb );
if ( !sq.exec() )
{
qDebug()<<"create failed"<<sq.lastError();
}
QString strReadTb = "insert into testMultithread (id,name) values(2,'123');";
调试程序的时候发现insert语句总是报错。
原因:
insert的时候,id的值已经存在了,每次insert的时候,id的值都是1.
因为id是主键。
insert语句,可以忽略主键(如果主键是integer类型的,整型),忽略primary key后,只插入其他字段的值。主键会自动增1.(如果当前表为空表,主键会自动增1)
QString strReadTb = "insert into testMultithread(name) Values(:name);";
QSqlQuery sq(m_db);
sq.prepare( strReadTb );
QTime t;
t = QTime::currentTime();
int nSec = t.msec() + t.second()*1000;
qsrand(nSec);
int nid = qrand();
sq.bindValue(":name",QString::number(nid));
if ( !sq.exec() )
{
qDebug()<<sq.lastError();
qDebug()<<"write exec failed"<<m_name;
}
else
{
qDebug()<<"insert data suc"<<m_name<<this->currentThreadId();
}