下载sqlite数据库
首先到sqlite官方网站下载:
http://www.sqlite.org/download.html
得到sqlite3.exe。即可.就可以 *** 作数据库了。
运行cmd到该指定的目录下,使用如下命令:如
F:\软件\学习软件\数据库\sqlite\sqlite-3_6_17>sqlite3.exe test
并有以下提示:Enter sql statements terminated with a ";"
就可以创建一个名为test的数据库了.你可以使用.help命令查看各命令.
.databases 可以得到所有的数据库。
可以使用如下命令得到一张表,并插入数据。最后.quit退出.
F:\软件\学习软件\数据库\sqlite\sqlite-3_6_17> create table student(ID varchar(10),name varchar(20),age smallint);
F:\软件\学习软件\数据库\sqlite\sqlite-3_6_17> select * from student;
F:\软件\学习软件\数据库\sqlite\sqlite-3_6_17> insert into student values('1001','lovesizhao',26);
F:\软件\学习软件\数据库\sqlite\sqlite-3_6_17> select * from student;
1001|lovesizhao|26
F:\软件\学习软件\数据库\sqlite\sqlite-3_6_17> drop table student;
F:\软件\学习软件\数据库\sqlite\sqlite-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.\n\n"
"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:\MysqL\lib\opt(而且这些目录中间不能有空格,否则得不到libMysqL.a
然后转到Qt的目录下(我的为D:\Qt\4.3.2\src\plugins\sqldrivers\MysqL).
运行如下命令:
qmake -o Makefile "INCLUDEPATH+=D:\MysqL\lib\include" "liBS+=D:\MysqL\lib\lib\opt\liBMysqL.a" MysqL.pro
mingw32-make
这样就在D:\Qt\4.3.2\plugins\sqldrivers目录下生成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());
}
这只是其中一部分核心代码.
总结以上是内存溢出为你收集整理的SQLite全部内容,希望文章能够帮你解决SQLite所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)