新浪微博
腾讯微博
会员列表
统计排行
基本信息
到访IP统计
管理团队
管理统计
在线会员
会员排行
版块排行
帖子排行
标签排行
帮助
下拉
用户名
电子邮箱
用户名
密 码
记住登录
登录
找回密码
注册
快捷通道
关闭
您还没有登录,快捷通道只有在登录后才能使用。
立即登录
还没有帐号? 赶紧
注册一个
首页
论坛
Qt下载
作品展
群组
个人中心
捐赠、管理与开发
邮件订阅
帖子
文章
日志
用户
版块
群组
帖子
搜索
QTCN开发网
>
Qt基础编程
>
QSqlQuery::exec: database not open
发帖
回复
返回列表
新帖
13437
阅读
7
回复
QSqlQuery::exec: database not open
[复制链接]
上一主题
下一主题
离线
luckyyoung
UID:113448
注册时间
2011-03-14
最后登录
2017-03-23
在线时间
31小时
发帖
53
搜Ta的帖子
精华
0
金钱
555
威望
64
贡献值
0
好评度
54
访问TA的空间
加好友
用道具
新手上路
关闭
个人中心可以申请新版勋章哦
立即申请
知道了
加关注
发消息
只看楼主
倒序阅读
楼主
发表于: 2012-04-07
关键词:
QSqlQuery
exec
database
复制代码
QSqlQuery conAccessDB::excuteSQL(QString sqlcmd){
if(!db.open()){
qDebug() << "Database Error: " << db.lastError().text();
return QSqlQuery();
}
if(!query.exec(sqlcmd)){
qDebug() << "Database Error: When excute \"" << sqlcmd << "\"";
db.close();
return QSqlQuery();
}
db.close();
return query;
}
我是在打开了
数据
库
之后才
执行
的query.exec(sqlcmd),为何还会出现数据库没打开(
QSqlQuery
::exec:
database
not
open)的提示?我该怎么做?
共
条评分
Anything is possible!
回复
举报
分享到
淘江湖
新浪
QQ微博
QQ空间
开心
人人
豆瓣
网易微博
百度
鲜果
白社会
飞信
离线
淳于半邪
UID:122204
注册时间
2011-09-16
最后登录
2014-04-09
在线时间
222小时
发帖
329
搜Ta的帖子
精华
0
金钱
4009
威望
349
贡献值
0
好评度
339
访问TA的空间
加好友
用道具
骑士
加关注
发消息
只看该作者
1楼
发表于: 2012-04-10
给全代码,是不是前面建库的时候出现了问题
共
条评分
回复
举报
离线
luckyyoung
UID:113448
注册时间
2011-03-14
最后登录
2017-03-23
在线时间
31小时
发帖
53
搜Ta的帖子
精华
0
金钱
555
威望
64
贡献值
0
好评度
54
访问TA的空间
加好友
用道具
新手上路
加关注
发消息
只看该作者
2楼
发表于: 2012-04-10
引用第1楼淳于半邪于2012-04-10 18:17发表的 :
给全代码,是不是前面建库的时候出现了问题
//connectAccessDB.pro
QT
+= core
QT
+= sql
QT
-= gui
TARGET
= connectAccessDB
CONFIG
+= console
CONFIG
-= app_bundle
TEMPLATE
= app
SOURCES
+= main.cpp \ conAccessDB.cpp
HEADERS
+= \ conAccessDB.h
//conAccessDB.h
#ifndef
CONACCESSDB_H
#define
CONACCESSDB_H
#include
<QString>
#include
<QtSql/QtSql>
#include
<QDebug>
class
conAccessDB
{
public
:
conAccessDB
();
conAccessDB
(
QString
path
,
QString
username
=
""
,
QString
password
=
""
);
//set
function
void
setDatabasePath
(
QString
path
);
void
setUsername
(
QString
username
);
void
setPassword
(
QString
password
);
QSqlQuery
excuteSQL
(
QString
sqlcmd
);
private
:
QSqlDatabase
db
;
QSqlQuery
query
;
QString
path
;
QString
username
;
QString
password
;
};
#endif
//
CONACCESSDB_H
//conAccessDB.cpp
#include
"conAccessDB.h"
conAccessDB
::
conAccessDB
(){
db
=
QSqlDatabase
::
addDatabase
(
"QODBC"
,
"MYACCESS"
);
}
conAccessDB
::
conAccessDB
(
QString
path
,
QString
username
,
QString
password
)
{
this
->
path
=
path
;
this
->
username
=
username
;
this
->
password
=
password
;
db
=
QSqlDatabase
::
addDatabase
(
"QODBC"
);
QString
dbName
=
"DRIVER={Microsoft
Access
Driver
(*.mdb)};FIL={MS
Access};DBQ="
+
path
;
db
.
setDatabaseName
(
dbName
);
db
.
setUserName
(
username
);
db
.
setPassword
(
password
);
if
(!
db
.
open
()){
qDebug
()
<<
"Database
Error"
<<
db
.
lastError
().
text
();
return
;
}
db
.
close
();
}
void
conAccessDB
::
setUsername
(
QString
username
){
this
->
username
=
username
;
}
void
conAccessDB
::
setPassword
(
QString
password
){
this
->
password
=
password
;
}
void
conAccessDB
::
setDatabasePath
(
QString
path
){
this
->
path
=
path
;
}
QSqlQuery
conAccessDB
::
excuteSQL
(
QString
sqlcmd
){
if
(!
db
.
open
()){
qDebug
()
<<
"Database
Error:
"
<<
db
.
lastError
().
text
();
return
QSqlQuery
();
}
if
(!
query
.
exec
(
sqlcmd
)){
qDebug
()
<<
"Database
Error:
When
excute
\""
<<
sqlcmd
<<
"\""
;
db
.
close
();
return
QSqlQuery
();
}
db
.
close
();
return
query
;
}
//main.cpp
#include
<QtCore/QCoreApplication>
#include
"conAccessDB.h"
#include
<QTextStream>
int
main
(
int
argc
,
char
*
argv
[])
{
QCoreApplication
a
(
argc
,
argv
);
conAccessDB
db
(
"D:/Qtprogram/connectAccessDB-build-desktop/safeSystem.mdb"
);
QSqlQuery
query
=
db
.
excuteSQL
(
"select
*
from
basicInfo"
);
while
(
query
.
next
()){
if
(!
query
.
isActive
()){
qDebug
()
<<
"Database
Error:
"
<<
query
.
lastError
().
text
();
return
1
;
}
else
{
for
(
int
i
=
0
;
i
<
query
.
record
().
count
();
i
++){
qDebug
()
<<
"Record
column
"
<<
i
+
1
<<
query
.
value
(
i
).
toString
();
}
}
}
return
a
.
exec
();
}
共
条评分
Anything is possible!
回复
举报
离线
luckyyoung
UID:113448
注册时间
2011-03-14
最后登录
2017-03-23
在线时间
31小时
发帖
53
搜Ta的帖子
精华
0
金钱
555
威望
64
贡献值
0
好评度
54
访问TA的空间
加好友
用道具
新手上路
加关注
发消息
只看该作者
3楼
发表于: 2012-04-10
引用第1楼淳于半邪于2012-04-10 18:17发表的 :
给全代码,是不是前面建库的时候出现了问题
数据库是已经建好的,在其他编程语言中正确打开并使用。
共
条评分
Anything is possible!
回复
举报
离线
luckyyoung
UID:113448
注册时间
2011-03-14
最后登录
2017-03-23
在线时间
31小时
发帖
53
搜Ta的帖子
精华
0
金钱
555
威望
64
贡献值
0
好评度
54
访问TA的空间
加好友
用道具
新手上路
加关注
发消息
只看该作者
4楼
发表于: 2012-04-10
引用第1楼淳于半邪于2012-04-10 18:17发表的 :
给全代码,是不是前面建库的时候出现了问题
感觉和书里的代码差不多,只不过写在了类里。连接数据库的时候,没有任何报错。query时就报错了。求教!
共
条评分
Anything is possible!
回复
举报
离线
ywchen2000
UID:5282
注册时间
2006-04-03
最后登录
2018-01-23
在线时间
51小时
发帖
67
搜Ta的帖子
精华
0
金钱
690
威望
69
贡献值
0
好评度
68
访问TA的空间
加好友
用道具
新手上路
加关注
发消息
只看该作者
5楼
发表于: 2012-06-05
数据库的路径对么??
共
条评分
ipanforlinux 金山快盘LINUX版本
qnotepad 一个功能强大的文本编辑器
欢迎访问
http://www.ipanx.net
回复
举报
离线
XChinux
UID:2
注册时间
2004-11-08
最后登录
2025-04-28
在线时间
7016小时
发帖
11242
搜Ta的帖子
精华
61
金钱
147522
威望
9967
贡献值
702
好评度
8189
访问TA的空间
加好友
用道具
总版主
加关注
发消息
只看该作者
6楼
发表于: 2012-06-06
你的QSqlQuery成员变量query构造时没有指定QSqlDatabase对象,并且数据库连接成功后也没有指定setDatabase(),这样的话, 这个query一直使用的是默认连接,而你的addDatabase()第二个参数指定的是myaccess连接,问题就在这里,解决方法:
或者addDatabse()时第二个参数不填
或者调用query.setDatabase(db)
共
条评分
二笔 openSUSE Vim N9 BB10
XChinux@163.com
网易博客
腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
回复
举报
离线
btptboy
UID:109773
注册时间
2010-12-15
最后登录
2014-05-27
在线时间
60小时
发帖
64
搜Ta的帖子
精华
0
金钱
640
威望
74
贡献值
0
好评度
64
访问TA的空间
加好友
用道具
新手上路
加关注
发消息
只看该作者
7楼
发表于: 2012-06-21
总版主正解,QSqlQuery一定要传QSqlDatabase参数
共
条评分
我思故我在
回复
举报
发帖
回复
返回列表
http://www.qtcn.org/bbs
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问
快速回复
限100 字节
您目前还是游客,请
登录
或
注册
进入高级模式
文字颜色
发 布
回复后跳转到最后一页
上一个
下一个
关闭
补充发布信息
验证码:
发 布
隐藏
快速跳转
站务及资讯
网站公告
新闻资讯
Qt官方发布
网站管理
Qt应用及资源
Qt 作品展
Qt代码秀
Qt应用版
Qt技术讨论区
Qt安装与发布
Qt中文处理
Qt基础编程
Qt QML开发
Qt嵌入式开发
Qt移动平台开发
其它技术开发讨论区
Qt图书专区
《C++ GUI Qt 4编程》(第2版)专栏
《Qt高级编程》专栏
《零基础学Qt4编程》专栏
《Qt设计模式》(第2版) 图书专栏
Python Qt GUI快速编程
Qt项目开发区
天池项目
Qt开放平台开发库
机械CAD
扇贝词典
非活跃项目区
社区中心
帖子回收站(Trash)
招聘、求职、供求、广告等
休闲娱乐
关闭
关闭
选中
1
篇
全选