下载SQLite数据库
首先到SQLite官方网站下载:
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来访问刚才建立的数据库:
QSqlDatabase dbconn = 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 = new QTableView(); model = new QSqlTableModel(this,dbconn); model->setTable("test"); model->select(); view->setModel(model);
也可以直接访问内存得到:如
QSqlDatabase db = 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数据库,测试是否成功.
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); // 使用mysql数据库驱动 db.setHostName("localhost"); db.setDatabaseName("test"); // 我们之前建立的数据库 db.setUserName("root"); // 我们创建的 yunfan 用户名 db.setPassword("123"); // yunfan 用户的密码 bool ok = db.open(); // 尝试连接数据库 if(ok) { // 这里用yunfan已经成功连上数据库 QSqlQuery query; // 新建一个查询的实例 if(query.exec("select * from t_customer")){ // 尝试列出 employee 表的所有记录 // 本次查询成功 int numRows = 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()); QString result = id ;//+ " " + fname + lname + " " + (dob.toString()) + " "+phone; display.append(result); } display.append("============================================"); display.append(QString("totally %1 rows").arg( numRows)); } else { // 如果查询失败,用下面的方法得到具体数据库返回的原因 QSqlError error = query.lastError(); display.append("From mysql database: " + error.databaseText()); } } else{ // 打开数据库失败,显示数据库返回的失败描述 display.append("cannot open database."); display.append("Reason: " + db.lastError().databaseText()); }
这只是其中一部分核心代码. (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|