標籤:
【簡要功能介紹】
使用sqlite資料庫和Qt搭建介面,實現連絡人資料庫記錄。連絡人有id編號,姓名,年齡.可對連絡人
【表增加連絡人】
【刪除連絡人】
【更新連絡人資訊】
【顯示全部連絡人資訊】
【運行介面】
【源碼下載】【http://pan.baidu.com/s/1o6OGley】
使用sqlitebrowser 查看
【初始化資料庫】
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 = 0; sql_query.prepare(select_max_sql); if(!sql_query.exec()) { qDebug()<<sql_query.lastError(); } else { while(sql_query.next()) { max_id = sql_query.value(0).toInt(); qDebug()<<QString("max id:%1").arg(max_id); } } sql_query.prepare(insert_sql); sql_query.addBindValue(max_id+1); 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(0).toInt(); QString name = sql_query.value(1).toString(); int age = sql_query.value(2).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選中的記錄刪除
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 ();
QT資料庫使用案列【連絡人】-- 使用sqlite和QStringListModel