http://www.sqlite.org/download.html
得到sqlite3.exe。即可.就可以操作資料庫了。
運作cmd到該指定的目錄下,使用如下指令:如
F:軟體學習軟體資料庫SQlitesqlite-3_6_17>sqlite3.exe test
并有以下提示:Enter SQL statements terminated with a ";"
就可以建立一個名為test的資料庫了.你可以使用.help指令檢視各指令.
.databases 可以得到所有的資料庫。
可以使用如下指令得到一張表,并插入資料。最後.quit退出.
F:軟體學習軟體資料庫SQlitesqlite-3_6_17> create table student(id varchar(10),name varchar(20),age smallint);
F:軟體學習軟體資料庫SQlitesqlite-3_6_17> select * from student;
F:軟體學習軟體資料庫SQlitesqlite-3_6_17> insert into student values('1001' , 'lovesizhao' ,26);
F:軟體學習軟體資料庫SQlitesqlite-3_6_17> select * from student; 1001|lovesizhao|26
F:軟體學習軟體資料庫SQlitesqlite-3_6_17> drop table student;
F:軟體學習軟體資料庫SQlitesqlite-3_6_17> .quit
而drop table student; 可以删除該表格.其實大部操作都屬于SQL的相同沒什麼改變.
也可以将該資料庫備份至output.sql,也稱為重定向
sqlite3.exe test.db3>output.sql
最後可以将資料庫儲存為test.db3即可。
下面講解如何通過Qt來通路剛才建立的資料庫:
QSqlDatabasedbconn=QSqlDatabase::addDatabase("QSQLITE", "testSQLite");
dbconn.setDatabaseName("test.db3"); //目前目錄下的test.db3資料庫檔案
//SQLite資料庫檔案可用SQLite的指令行工具(c:sqlite3.exe 資料庫名)或用SQLite GUI工具建立,SQLiteSpy
if(!dbconn.open())
{
return;
}
QTableView *view;
QSqlTableModel *model;
view=newQTableView();
model=newQSqlTableModel(this,dbconn);
model->setTable("test");
model->select();
view->setModel(model);
也可以直接通路記憶體得到:如
QSqlDatabasedb=QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
if (!db.open()) {
QMessageBox::critical(0, qApp->tr("Cannot open database"),
qApp->tr("Unable to establish a database connection.n"
"This example needs SQLite support. Please read "
"the Qt SQL driver documentation for information how "
"to build it.nn"
"Click Cancel to exit."), QMessageBox::Cancel);
return false;
}
QSqlQuery query;
query.exec("create table person (id int primary key, "
"firstname varchar(20), lastname varchar(20))");
query.exec("insert into person values(101, 'Danny', 'Young')");
query.exec("insert into person values(102, 'Christine', 'Holand')");
query.exec("create table images (locationid int, file varchar(20))");
query.exec("insert into images values(0, 'images/oslo.png')");
query.exec("insert into images values(1, 'images/brisbane.png')");
以下的操作隻是往資料庫中添加資料的插入操作.如果想進一步學習,請查找相當資料。
在這裡我還提拱和種可以通路mysql的方法.
首先要在Qt安裝好mysql的插件.
去網上下載下傳:mingw-utils-0.3
然後将解包後在其bin目錄下找到reimp.exe,拷貝到mingw的bin目錄下。而且要将mingw的bin目錄加到classpath下.
則可以在cmd下使用如下指令:
t>reimp -d libmysql.lib
t>dlltool -k -d libmysql.def -l libmysql.a
注意:t的目錄是mysql安裝目錄下。我的目錄為D:MySQLlibopt(而且這些目錄中間不能有空格,否則得不到libmysql.a
然後轉到Qt的目錄下(我的為D:Qt4.3.2srcpluginssqldriversmysql).
運作如下指令:
qmake -o Makefile "INCLUDEPATH+=D:MySQLlibinclude" "LIBS+=D:MySQLlibliboptLIBMYSQL.a" mysql.pro
mingw32-make
這樣就在D:Qt4.3.2pluginssqldrivers目錄下生成libqsqlmysql4.a和qsqlmysql4.dll了.
然後就是運作一個連接配接到mysql資料庫,測試是否成功.
QSqlDatabasedb=QSqlDatabase::addDatabase("QMYSQL"); // 使用mysql資料庫驅動
db.setHostName("localhost");
db.setDatabaseName("test"); // 我們之前建立的資料庫
db.setUserName("root"); // 我們建立的 yunfan 使用者名
db.setPassword("123"); // yunfan 使用者的密碼
boolok=db.open(); // 嘗試連接配接資料庫
if(ok) { // 這裡用yunfan已經成功連上資料庫
QSqlQuery query; // 建立一個查詢的執行個體
if(query.exec("select * from t_customer")){ // 嘗試列出 employee 表的所有記錄
// 本次查詢成功
intnumRows=0; // 詢問資料庫驅動,是否驅動含有某種特性
if(db.driver()->hasFeature(QSqlDriver::QuerySize)){
numRows=query.size(); // 如果支援結果影響的行數,那麼直接記錄下來
} else {
query.last(); //否則定位到結果最後,qt 文檔說,這個方法非常慢
numRows=query.at() + 1;
}
QString id, lname, fname, phone;
QDateTime dob;
display.append("===========================================");
display.append(QString::fromLocal8Bit(" account | password | cname | cbalance"));
display.append("--------------------------------------");
while(query.next()) { // 定位結果到下一條記錄
id=query.value(0).toString();
//lname=QString::fromLocal8Bit(query.value(1).toByteArray());
//fname=QString::fromLocal8Bit(query.value(2).toByteArray());
//dob=query.value(3).toDateTime();
//phone=QString::fromLocal8Bit(query.value(4).toByteArray());
QStringresult=id;//+ " " + fname + lname + " " + (dob.toString()) + " "+phone;
display.append(result);
}
display.append("============================================");
display.append(QString("totally %1 rows").arg( numRows));
} else { // 如果查詢失敗,用下面的方法得到具體資料庫傳回的原因
QSqlErrorerror=query.lastError();
display.append("From mysql database: " + error.databaseText());
}
} else{ // 打開資料庫失敗,顯示資料庫傳回的失敗描述
display.append("cannot open database.");
display.append("Reason: " + db.lastError().databaseText());
}
這隻是其中一部分核心代碼.
小結:關于Qt資料庫操作 連接配接SQLite和MySQL資料庫執行個體的内容介紹完了,希望本文對你再學習過程中有所幫助!