创建sqlite数据库的过程---同mysql

 

 

 

 

 

 

 

 

建好sqlite数据库之后, 可以看到如下图所示:

 

 

 

 

参考网站: https://blog.csdn.net/wyansai/article/details/52901166

 

参考网站: https://www.cnblogs.com/xia-weiwen/archive/2017/05/04/6806709.html

 

在QT上建立一个控制台应用程序, 然后将代码直接复制上就可以编译测试.
还有就是需要在*.pro文件中添加: QT += sql
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <qDebug>
#include <QString>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
bool success;
//建立数据库--加载数据库驱动
QSqlDatabase database;
if (QSqlDatabase::contains("qt_sql_default_connection"))
{
database = QSqlDatabase::database("qt_sql_default_connection");
}
else
{
database = QSqlDatabase::addDatabase("QSQLITE");
database.setDatabaseName("C:\\Users\\Administrator\\Desktop\\sqlite.db");
//db.setDatabaseName("main");//有这个会报错
//database.setUserName("");//可以省略
//database.setPassword("");//可以省略
}
//打开数据库if (!database.open())
{
qDebug() << "Error: Failed to connect database." << database.lastError();
return -1;
}
//#####################################################################
//--新建一个表student作为测试表
//#####################################################################
//执行sql语句---新建一个表
QSqlQuery sql_query;
/*QString create_sql = "create table student (id int, name varchar(30), age int)";
sql_query.prepare(create_sql);
success = sql_query.exec();
if(!success)
{
qDebug() << "Error: Fail to create table." << sql_query.lastError();
return -1;
}
else
{
qDebug() << "Table created!";
}*/
//#####################################################################
//--插入数据操作
//#####################################################################
//向student表中插入数据
//第一种方法:
/*success = sql_query.exec("insert into student values(1, 'xiaowen', 10)");
if(!success)
{
qDebug() << "Error: Fail to create table." << sql_query.lastError();
return -1;
}*/
//第二种方法:
QString sql = "insert into student values(3, 'xiaozi', 25)";
success = sql_query.exec(sql);
if(!success)
{
qDebug() << "Error: Fail to create table." << sql_query.lastError();
return -1;
}
//第三种方法:执行带有占位符的sql语句
QString insert_sql = "insert into student values (?, ?, ?)";
sql_query.prepare(insert_sql);
/*sql_query.addBindValue(2);
sql_query.addBindValue("xiaohu");
sql_query.addBindValue(22);*/
sql_query.bindValue(0, 5);
sql_query.bindValue(1, "小马");sql_query.bindValue(2, 30);
success = sql_query.exec();
if(!success)
{
qDebug() << sql_query.lastError();
return -1;
}
else
{
qDebug() << "inserted success!";
}
//批量插入
insert_sql = "insert into student values(?,?,?)";
sql_query.prepare(insert_sql);
QVariantList GroupIDs;
GroupIDs.append(0);
GroupIDs.append(1);
GroupIDs.append(2);
QVariantList GroupNames;
GroupNames.append("xiaoma");
GroupNames.append("xiaowei");
GroupNames.append("xiaolian");
QVariantList GroupAddress;
GroupAddress.append(10);
GroupAddress.append(15);
GroupAddress.append(18);
sql_query.addBindValue(GroupIDs);
sql_query.addBindValue(GroupNames);
sql_query.addBindValue(GroupAddress);
success = sql_query.execBatch();
if(!success)
{
qDebug()<<sql_query.lastError();
return -1;
}
else
{
qDebug()<<"insert batch data succ";
}
return 0;
//#####################################################################
//--更新数据
//#####################################################################
//QString update_sql = "update student set name = :name where id = :id";
QString update_sql = "update student set name = ? where id = ?";
sql_query.prepare(update_sql);
//sql_query.bindValue(":name", "Qt");//sql_query.bindValue(":id", 1);
sql_query.bindValue(0, "Qt");
sql_query.bindValue(1, 2);
success = sql_query.exec();
if(!success)
{
qDebug() << sql_query.lastError();
return -1;
}
else
{
qDebug() << "updated!";
}
//#####################################################################
//--查询数据
//#####################################################################
QString select_sql = "select id, name from student";
success = sql_query.exec();
if(!success)
{
qDebug()<<sql_query.lastError();
}
else
{
while(sql_query.next())
{
int id = sql_query.value(0).toInt();
QString name = sql_query.value(1).toString();
qDebug()<<QString("id:%1 name:%2").arg(id).arg(name);
}
}
//查询最大的ID
QString select_max_sql = "select max(id) from student";
int max_id = 0;
sql_query.prepare(select_max_sql);
success = sql_query.exec();
if(!success)
{
qDebug() << sql_query.lastError();
}
else
{
while(sql_query.next())
{
max_id = sql_query.value(0).toInt();
qDebug() << QString("max id:%1").arg(max_id);
}
}
//#####################################################################//--删除数据
//#####################################################################
QString delete_sql = "delete from student where id = ?";
sql_query.prepare(delete_sql);
sql_query.addBindValue(3);
success = sql_query.exec();
if(!success)
{
qDebug()<<sql_query.lastError();
return -1;
}
else
{
qDebug()<<"deleted!";
}
//清空表
/*QString clear_sql = "delete from student";
sql_query.prepare(clear_sql);
success = sql_query.exec();
if(!success)
{
qDebug() << sql_query.lastError();
return -1;
}
else
{
qDebug() << "table cleared";
}*/
//关闭数据库
database.close();
return a.exec();
}

 

posted @   咖喱给给啊  阅读(320)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示