
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
}
1)创建ui界面 (2)导入头文件 一、自动提交模式 二、手动提交模式 (1)构造函数中的代码 (2) “提交”按钮的槽函数 在ui界面导入一个Table View。 这个控件可以显示表格,在代码中我们通过setHeaderData()函数可以自定义每列的名称。 需要用到以下头文件,QSqlDatabase用于连接数据库,QMessageBox用于d出对话框,QSqlError用于显示数据库的错误信息,QSqlQuery和QSqlTableModel用于 *** 作数据库。 #include <QWidget>#include <QSqlDatabase>#include <QMessageBox>#include <QSqlError>#include <QString>#include <QSqlQuery>#include <QSqlTableModel>在Qt窗口显示的表格中改动数据,然后点击回车,数据库中的表格中的数据就自动更新了。 注意,在这里必须是敲击回车才会进行数据库的更新,如果直接用鼠标切换到其他的地方是不会更新数据库的。 //连接数据库 QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL")db.setHostName("127.0.0.1")db.setUserName("root")db.setPassword("123456")db.setDatabaseName("aaa2")if(db.open()==false){ QMessageBox::warning(this,"waring",db.lastError().text())} //实例化model model = new QSqlTableModel(this)//将模型设置到视图 ui->tableView->setModel(model)//给model设置数据表,前提条件是数据库已经打开了 model->setTable("student")欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)