关闭

嵌入式 QT创建数据库以及数据库基本操作问题

719人阅读 评论(0) 收藏 举报
分类:

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 后也很少有人会贴代码让大家

 





去参考。下面就简单的贴下自己写的 创建和插入的操作方法。会写数据库的童鞋知道语法了 就知道怎么写了。。。





 





  1. bool database::createDatabase()  
  2.  
  3.     QSqlQuery query;   // 此处请查询 query的相关操作  
  4.     qDebug() << "Start to create table..." 
  5.     //create table: User  
  6.     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]) )"); // 一定注意不要拼写错误,引号内是不提示拼写错误的。自己也感觉这有点不方便  
  7.     //create table: Connect  
  8.     query.exec("CREATE TABLE [Connect] [LeftUser] VARCHAR(40) NOT NULL, [RightUser] VARCHAR(40) NOT NULL, [relation] INTEGER DEFAULT '0' NULL, PRIMARY KEY ([LeftUser], [RightUser]))");  
  9.     if (query.lastError().isValid())  
  10.      
  11.         qDebug() << query.lastError();  
  12.         return false 
  13.      
  14.     else  
  15.      
  16.         qDebug() << "Create database successfully." 
  17.      
  18.     return true 
  19.  
  插入操作 
  1. bool database::adduser( User user  
  2.  
  3.     if (!db.isOpen())  
  4.      
  5.         createconnection();  
  6.      
  7.     QSqlQuery query;  
  8.     qDebug() << "start to insert data" 
  9.     query.exec("INSERT INTO [User] userId, username, email, password, city) VALUES(?,?,?,?,?)");  
  10.     QVariantList userId;  
  11.     userId << user.getUserId();  
  12.     query.addBindValue(userId);  
  13.     QVariantList username;  
  14.     username << user.getUserName();  
  15.     query.addBindValue(username);  
  16.     QVariantList email;  
  17.     email << user.getEmail();  
  18.     query.addBindValue(email);  
  19.     QVariantList password;  
  20.     password << user.getPassword();  
  21.     query.addBindValue(password);  
  22.     QVariantList city;  
  23.     city << user.getCity();  
  24.     query.addBindValue(city);  
  25.     try  
  26.      
  27.         if (!query.execBatch())  
  28.          
  29.             qDebug() << query.lastQuery();  
  30.             qDebug() << query.lastError();  
  31.             return NULL;  
  32.          
  33.      
  34.     catch(...)  
  35.      
  36.         QMessageBox::critical(0, "Add New Node error!" 
  37.                               "Unable to add new Node!/n/n"  
  38.                                        "Click Cancel to exit."QMessageBox::Cancel);  
  39.      
  40.     if!UpdateConnectTable(user.getUserId(),user.getUserId(),2))  
  41.      
  42.         QMessageBox::critical(0,"","Update table Connect error");  
  43.         return NULL;  
  44.      
  45.     return true 
  46.  
  
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:975367次
    • 积分:17595
    • 等级:
    • 排名:第541名
    • 原创:741篇
    • 转载:522篇
    • 译文:0篇
    • 评论:105条
    最新评论