QT数据库使用案列【联系人】-- 使用sqlite和QStringListModel

【关于如何打包自己开发的程序为安装包,可以参考http://www.cnblogs.com/yuliyang/p/4242179.html

【简要功能介绍】

使用sqlite数据库和Qt搭建界面,实现联系人数据库记录。联系人有id编号,姓名,年龄.可对联系人

【表增加联系人】

【删除联系人】

【更新联系人信息】

【显示全部联系人信息】

【运行界面】

QT数据库使用案列【联系人】-- 使用sqlite和QStringListModel

【源码下载】【http://pan.baidu.com/s/1o6OGley

使用sqlitebrowser 查看

QT数据库使用案列【联系人】-- 使用sqlite和QStringListModel

【初始化数据库】

 QLibrary sqlib("./sqldrivers/qsqlited.dll");
sqlib.load ();
qDebug()<<"my library loaded"<<sqlib.isLoaded(); db = QSqlDatabase::addDatabase("QSQLITE","SQLITE");
#ifdef Q_OS_LINUX
QString path(QDir::home().path());
path.append(QDir::separator()).append("my.db.sqlite");
path = QDir::toNativeSeparators(path);
db.setDatabaseName(path);
#else
db.setDatabaseName("my.db.sqlite");
#endif /*
* create my.db.sqlite file if not exist
*/
db.open ();
db.close ();

【创建表】

    if(db.open ()){
sql_query = QSqlQuery (db);
sql_query.prepare(create_sql);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"table created!";
}
}
updateDataBaseShow();

【插入记录】

 if(db.open ()){
sql_query = QSqlQuery (db);
int max_id = ;
sql_query.prepare(select_max_sql);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
while(sql_query.next())
{
max_id = sql_query.value().toInt();
qDebug()<<QString("max id:%1").arg(max_id);
}
}
sql_query.prepare(insert_sql);
sql_query.addBindValue(max_id+);
sql_query.addBindValue(ui->lineEdit_name->text ());
sql_query.addBindValue(ui->lineEdit_age->text ().toInt ());
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"inserted!";
} updateDataBaseShow();
}

【显示全部数据(两列,id和name)】

 if(db.open ()){
sql_query = QSqlQuery (db);
if(!sql_query.exec(select_sql))
{
qDebug()<<sql_query.lastError();
}
else
{
while(sql_query.next())
{
int id = sql_query.value("id").toInt();
QString name = sql_query.value("name").toString();
qDebug()<<QString("id:%1 name:%2").arg(id).arg(name);
}
}
}

【显示全部数据】

if(db.open ()){
sql_query = QSqlQuery (db);
sql_query.prepare(select_all_sql);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
ui->textEdit->clear ();
while(sql_query.next())
{
int id = sql_query.value().toInt();
QString name = sql_query.value().toString();
int age = sql_query.value().toInt();
ui->textEdit->append (QString("id:%1 name:%2 age:%3").arg(id).arg(name).arg(age));
qDebug()<<QString("id:%1 name:%2 age:%3").arg(id).arg(name).arg(age);
}
}
}

【清除表】

 if(db.open ()){
sql_query = QSqlQuery (db);
sql_query.prepare(clear_sql);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"cleared";
}
}
updateDataBaseShow();

【删除一条记录】combobox选中的记录删除

QT数据库使用案列【联系人】-- 使用sqlite和QStringListModel

  if(db.open ()){
sql_query = QSqlQuery (db);
sql_query.prepare(delete_sql);
sql_query.addBindValue(ui->comboBox->currentText ().toInt ());
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"deleted!";
}
}
updateDataBaseShow();

【更新联系人信息】

if(db.open ()){
sql_query = QSqlQuery (db);
sql_query.prepare("update student set name = :name ,age = :age where id = :id");
sql_query.bindValue(":name", ui->lineEdit_name->text ());
sql_query.bindValue(":age", ui->lineEdit_age->text ());
sql_query.bindValue(":id", ui->comboBox->currentText ().toInt ());
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"updated!";
}
}
updateDataBaseShow();

  

【删除数据库】

 #ifdef Q_OS_LINUX
QString path(QDir::home().path());
path.append(QDir::separator()).append("my.db.sqlite");
path = QDir::toNativeSeparators(path);
QFile::remove(path);
#else
QFile::remove("my.db.sqlite");
#endif
ui->comboBox->clear ();
ui->textEdit->clear ();
上一篇:【Alpha】Daily Scrum Meeting第四次


下一篇:秒懂ASP.NET中的内置对象