qt怎样创建数据库以及数据库的操作
staticboolcreateConnection()
{QSqlDatabasedb=QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("mytest.db");
if(!db.open())
returnfalse;
QSqlQueryquery;
//query.exec(QObject::tr("createtablestudent(idintprimarykey,namevchar)"));
//query.exec(QObject::tr("insertintostudentvalues(0,'刘')"));
query.exec(QObject::tr("insertintostudentvalues(1,'刚')"));
//query.exec(QObject::tr("insertintostudentvalues(2,'红')"));
//query.prepare("insertintostudentvalues(?,?)");
//-------------------------------------------------------
//通过下面这段代码可以实现向数据库插入变量
//--------------------------------------------------------
QVariantListages;
intx1,x2,x3,x4;
x1=12;
x2=13;
x3=14;
x4=15;
ages<<x1<<x2<<x3<<x4;
query.addBindValue(ages);
QVariantListnames;
names<<QObject::tr("小王")<<QObject::tr("小明")<<QObject::tr("小张")<<QObject::tr("小新");//如果要提交空串,用QVariant(QVariant::String)代替名字
query.addBindValue(names);
if(!query.execBatch())//进行批处理,如果出错就输出错误
qDebug()<<query.lastError();
returntrue;
}
#endif//DATABASE_H
然后用QSqlTableModel实现数据库数据显示
知道怎么操作数据库了,就会很快类推到相关的操作。只是开始不知道的时候,不知道从哪下手。GOOGLE 后也很少有人会贴代码让大家
去参考。下面就简单的贴下自己写的 创建和插入的操作方法。会写数据库的童鞋知道语法了 就知道怎么写了。。。
[c-sharp]view plaincopyprint?
- bool
database::createDatabase() - {
-
QSqlQuery query; // 此处请查询 query的相关操作 -
qDebug() << "Start to create table..."; -
//create table: User -
query.exec("CREATE TABLE [User] ( [userId] VARCHAR(40) NOT NULL, [username] VARCHAR(40) NOT NULL, [email] VARCHAR(40), [password] VARCHAR(40), [city] VARCHAR(20), PRIMARY KEY([userId]) )"); // 一定注意不要拼写错误,引号内是不提示拼写错误的。自己也感觉这有点不方便 -
//create table: Connect -
query.exec("CREATE TABLE [Connect] ( [LeftUser] VARCHAR(40) NOT NULL, [RightUser] VARCHAR(40) NOT NULL, [relation] INTEGER DEFAULT '0' NULL, PRIMARY KEY ([LeftUser], [RightUser]))"); -
if (query.lastError().isValid()) -
{ -
qDebug() << query.lastError(); -
return false; -
} -
else -
{ -
qDebug() << "Create database successfully."; -
} -
return true; - }
插入操作
- bool
database::adduser( User user ) - {
-
if (!db.isOpen()) -
{ -
createconnection(); -
} -
QSqlQuery query; -
qDebug() << "start to insert data"; -
query.exec("INSERT INTO [User] ( userId, username, email, password, city) VALUES(?,?,?,?,?)"); -
QVariantList userId; -
userId << user.getUserId(); -
query.addBindValue(userId); -
QVariantList username; -
username << user.getUserName(); -
query.addBindValue(username); -
QVariantList email; -
email << user.getEmail(); -
query.addBindValue(email); -
QVariantList password; -
password << user.getPassword(); -
query.addBindValue(password); -
QVariantList city; -
city << user.getCity(); -
query.addBindValue(city); -
try -
{ -
if (!query.execBatch()) -
{ -
qDebug() << query.lastQuery(); -
qDebug() << query.lastError(); -
return NULL; -
} -
} -
catch(...) -
{ -
QMessageBox::critical(0, "Add New Node error!", -
"Unable to add a new Node!/n/n" -
"Click Cancel to exit.", QMessageBox::Cancel); -
} -
if( !UpdateConnectTable(user.getUserId(),user.getUserId(),2)) -
{ -
QMessageBox::critical(0,"","Update table Connect error"); -
return NULL; -
} -
return true; - }