QT通過ODBC來連線sqlsever 2008資料庫
阿新 • • 發佈:2018-12-20
檔案頭新增#include<QtSql/QtSql> 工程檔案pro中新增QT += sql //連線資料庫函式如下:
QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");//利用odbc連線sqlsever db.setDatabaseName(QString("DRIVER={SQL SERVER};" "SERVER=%1;" //伺服器名稱 "DATABASE=%2;"//資料庫名 "UID=%3;" //登入名 "PWD=%4;" //密碼 ).arg("USER-20180909NN\\TONG")//伺服器名稱,一般伺服器名需要多加一個'\'表示轉義字元 .arg("data")//資料庫名 用你的資料庫名來代替data .arg("sa")//登入名 用你的資料庫名來代替sa .arg("1234")//密碼 用你的資料庫名來代替1234 );//只要對號入座就可連線 if(db.open()) { qDebug()<<"connect sucess"; } if (!db.open()) { QMessageBox::critical(0, qApp->tr("Cannot open database"), db.lastError().databaseText(), QMessageBox::Cancel); }
//查詢資料庫資訊
void Widget::on_pushButton_query_clicked(){ QSqlQueryModel *model = new QSqlQueryModel; model->setQuery("select * from dbo.dingdan");//這裡直接設定SQL語句,dbo.dingdan 表示資料庫名稱 ui->tableView->setModel(model);//在tableView中顯示資料庫資訊 } //插入資料庫的函式 void Widget::insert_da() { QSqlQuery query(db); if(!query.prepare("INSERT INTO dbo.dingdan(species,price,number)" "VALUES(:species,:price,:number)")) { qDebug()<<"error"; } query.bindValue(":species",species); query.bindValue(":price",price); query.bindValue(":number",number); query.exec(); }
//刪除資料庫
void Widget::on_pushButton_delete_clicked()
{
QSqlQuery query(db);
QString text_dingdan = ui->lineEdit_dingdan->text();
QString str = QString("delete from dbo.dingdan where dingdan_ID='%1' ").arg(text_dingdan);
query.exec(str);
}
//修改資料庫
void Widget::on_pushButton_alter_clicked() { QSqlQuery query(db); QString text_dingdan = ui->lineEdit_dingdan->text(); QString text_meat=ui->lineEdit_meat->text(); int text_goodsin=ui->lineEdit_goods_in->text().toDouble(); int text_goodsout=ui->lineEdit_goods_out->text().toDouble(); int text_kucun =text_goodsin-text_goodsout; QString str = QString("update dbo.dingdan set dingdan_ID='%1',kucun='%2',meat_ID='%3',goods_in='%4',goods_out='%5' where dingdan_ID ='%6' ").arg(text_dingdan).arg(text_kucun).arg(text_meat).arg(text_goodsin).arg(text_goodsout).arg(text_dingdan); qDebug()<<query.exec(str); on_pushButton_query_clicked(); }