access数据库调用
1、工程环境配置(vs+qt)
点击项目,右键,选择项目设置,选择SQL

2、获取自己数据库的驱动版本有哪些,如下代码所示:
QStringList drivers = QSqlDatabase::drivers();
for (int i = ; i < drivers.size(); i++)
qDebug() << drivers[i];
运行结果如下: //access数据库对应的是QODBC,MySql的驱动是QMYSQL,Oracle数据的驱动是QOCI,SQLite数据的驱动是QSQLITE
"QSQLITE"
"QMYSQL"
"QMYSQL3"
"QODBC"
"QODBC3"
"QPSQL"
"QPSQL7" //或者查看帮助文档,输入SQL Database Drivers查看
3、代码如下
QSqlDatabase mainDB = QSqlDatabase::addDatabase("QODBC", "MAINDB"); //使用驱动类型和连接名称connectionName将数据库添加到数据库连接列表中。在构造函数定义此对象,不然多次addDatabase会出错。 连接名称不能与电脑中已经连接的连接名相同,否则将会导致之前的连接被删除
QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=%1").arg(filePath);//filePath是数据库的绝对路径(包括数据库的文件名)
mainDB.setDatabaseName(dsn);//设置数据库路径 注意:如果设置好了数据库源名,可以直接使用数据库的源名就好
QString sqlStr;//数据库操作(sql)语句
if (!mainDB.open())
{
qDebug() << "打开数据库失败";
}
else
{
QSqlQuery query(db); //QSqlQuery类提供了一种执行和操作SQL语句的方法。
sqlStr = QString("SELECT * FROM tableName");
query.exec(sqlStr); //执行完此操作,将结果存入query对象中
}
QVector x,x1;
while(query.next()) //按行读取
{
x<<query.value("X").toDouble(); //这里使用的类似于键值,也可以使用列数,query.value(0).toDouble();这里的0代表第0列
x1<<query.value("X1").toDouble();
}
注意:
1.数据库回收
{
//这里用{}画出一个作用域,当这个域完成之后,数据库的所有操作动作都被回收了
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=%1").arg(DB_PATH);
db.setDatabaseName(dsn);//设置数据库路径
db.open();
//数据库操作
}
QSqlDatabase::removeDatabase("qt_sql_default_connection");//这句话之前保证当前连接的数据库没有任何数据操作,由上面的作用域实现。 如果在定义数据库的时候已经定义了连接名称,就可以将参数改为连接名。
2、打包报错,driver not load
)将C:\Qt\Qt5.3.1\5.3\msvc2012路径下的文件夹plugins复制到exe文件目录下,打开plugins,只保留sqldrivers文件夹,需要确认里面是否有你需要的驱动, 如:程序中使用了QSqlite数据库,则需要有qsqlite.dll(发布版)qsqlited.dll(调试版), )在main.cpp文件中添加下面第二行和第三行: QApplication a(argc, argv);
QString strLibPath(QDir::toNativeSeparators(QApplication::applicationDirPath())+QDir::separator()+"plugins");
a.addLibraryPath(strLibPath);
参考借鉴:https://blog.csdn.net/cibiren2011/article/details/52792476;https://www.cnblogs.com/judes/p/7305953.html;https://www.cnblogs.com/judes/p/9107423.html --万分感谢
access数据库调用的更多相关文章
- ruby调用Office Jet引擎压缩access数据库
由于单位业务需要,搭建一台服务器专门用来做数据存储.因为数据流很小,遂采用access库作为DB.开始还好,但是后来发现access数据库有一问题,就是表空间会随着使用越来越大,哪怕表里没有数据.因为 ...
- C# 调用Access数据库关于like模糊查询的写法
在access查询视图中要使用"*"做模糊匹配,但是在程序中要用%来匹配.在access中:NEIBUBH like '*1234*'在程序中:NEIBUBH like '%123 ...
- 【.net 深呼吸】连接Access数据库应注意的几点
本地数据库可以有Y种选择,比如Sqlite.SQL Server Express.SQL Local DB.SQL Server CE.Access等,本文老周选用比较著名的Access本地数据库,在 ...
- C#连接Access数据库(详解)
做一个用VS2012的C#连接Access数据库的备忘, SQL数据库固然强大,有大微软的强力技术支持,LINQ的方便操作,但是如果写一个小程序对数据库方面没有什么大的要求的话,将来在数据库方面就可以 ...
- C# ACCESS数据库操作类
这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的调用可以参考MSSQL那个类的调用,差不多的,只是提取所有记录的数量的时候有多一个参数,这个需要注意一下! usi ...
- php连接Access数据库错误及解决方法
<?php $connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("data.m ...
- 【原创】Capture CIS利用Access数据库建立封装库说明
1.在服务器端建立新空间,方便封装库以及数据库的归档存放 服务器路径:\\192.168.1.234\Share\STG_LIB,文件夹内容如下,其中Datesheet存放物料数据手册,Pcb_Lib ...
- Access数据库创建、使用
1.创建Access数据库表 1)在office中打开Microsoft Access2010,选择空数据库创建数据库StudentInfo. 2)创建新表,在表格第一列选择数据类型,并输入列名. 3 ...
- ADO访问Access数据库错误解决心得随笔
最近在用ADO访问Access数据库的时候出现了一个奇怪的错误,觉得有必要记录下来,和大家分享一下. 环境 win7 x86系统: VS2012编译器: Office2010: Access2000~ ...
随机推荐
- 中位数+暴力——cf433C
/* 中位数到所有数的距离之和最小 因为只能改一个数,所以我们找一个数,将其改为和其相邻的数的中位数,使答案最小 先求一次原答案 把每个数相邻的数用vector存下来,然后排序找中位数,计算减小的量 ...
- Shell基础(一):Shell基础应用、简单Shell脚本的设计、使用Shell变量、变量的扩展应用
一.Shell基础应用 目标: 本案例要求熟悉Linux Shell环境的特点,主要练习以下操作: 1> 切换用户的Shell环境 2> 练习命令历史.命令别名 3 ...
- Linux下安装PHP的curl扩展
先安装依赖包: yum install curl curl-devel 找到PHP的安装包,cd 进入安装包 cd php-5.6.25/ext/curl phpize 如果报找不到phpize就补全 ...
- [Luogu P4178]Tree 题解(点分治+平衡树)
题目大意 给定一棵树,边带权,问有多少点对满足二者间距离$\leq K$,$n \leq 40000$. 题解 点分治专题首杀!$Jackpot!$ (本来看着题意比较简单想捡个软柿子捏,结果手断了… ...
- share memory
header for public argument:shmdata.h #define TEXT_SZ 2048 struct shared_use_st { int written; char t ...
- CSS:CSS 组合选择符
ylbtech-CSS:CSS 组合选择符 1.返回顶部 1. CSS 组合选择符 CSS 组合选择符 组合选择符说明了两个选择器直接的关系. CSS组合选择符包括各种简单选择符的组合方式. 在 CS ...
- c# api身份验证和授权
授权 1. 全局 config.Filters.Add(new AuthorizeAttribute()); 2.控制器级别 [Authorize] public class HelloControl ...
- CSS3:FlexBox的详解
Flexbox是Flexible box 的简称(灵活的盒子容器),是CSS3引入的新的布局模式.它决定了元素如何在页面上排列,使它们能在不同的屏幕尺寸和设备下可预测地展现出来. 它之所以被称为 Fl ...
- js drag drop 收藏夹拖拽移除的简单例子
代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title& ...
- Intellij IDEA gradle项目目录介绍
Gradle简介 Java的构建,经历了从Ant-->Maven->Gradle的过程,每一次的进步,都是为了解决之前的工具带来的问题: Ant:Ant的功能虽然强大,但过于灵活,规范性不 ...