先说废话:csdn的qt板块终于开版了,开版之前呢要求的人一直很多,可现在开版了缺是看的人多做的人少。我很想发布一些独家秘笈在上面吸引些人气,可俺还是个newbie,只能靠提问来吸引人气了。O(∩_∩)O~
问题1:
看configure的说明,里面有个sql相关的参数。加入我要用ms sql的话,似乎应安装 odbc的驱动,那么貌似应该指定参数
-qt-sql-odbc 以及-plugin-sql-odbc 。请问这两个参数各代表啥?也就是说分别编译出什么什么的odbc驱动?
问题2:
自己打开example里面的 sqlquerymodel列子,编译运行都没问题。可我把他拷贝出来就说找不到connection.h,后来发现原来在上一层目录上,因此手动将该文件复制到源码目录、加入工程并修改源文件,再编译还出错,说找不到qdatabase.h,可是在编辑器能显示出文件所在位置,按住ctrl点击也能进入该文件。把握郁闷坏了,后来直接加绝对路径还是不行。再后来经过无数次摸索,终于发现pro文件和原来不一样了。因为我是新建的一个项目,当初忘记勾选qsql模块了,手动加上 qt+=sql,一切ok了。真郁闷啊!
为何qtcreator不能自动识别呢,我都把需要的文件都定位了啊?
问题3:
我把里面的内存数据库改成mssql服务器,指定使用odbc驱动,结果连接失败。使用getlasterror弹出的信息居然是口口乱码。请问,怎么连接mssql服务器,为何弹出的信息时乱码呢?
------解决方案--------------------
我也是新手。
问题三,是不是编码问题呢。
http://www.linuxforum.net/forum/showflat.php?Cat=&Board=kylix&Number=584839
------解决方案--------------------
1这里可以通过configure -help查看帮助信息啊。
而且注意控制台打印的信息,会提示当前哪些工程或文件会被编译。
------解决方案--------------------
1. 一个是SQL 模块 一个是SQL 插件,使用的SQL插件可以访问不同的数据库的API。由于SQL模块API是取决于数据库的。可以理解为,SQL插件 是一个桥梁,连接了Qt和SQL模块,SQL模块访问数据库。
http://doc.trolltech.com/3.3/sql-driver.html#Introduction
2.添加 QT += qtsql 是表明你在连接的时候要连接和SQL相关的库文件。如果你在Linux下编译过的话,其实就是想当于 -l 参数。如果没有 QT += qtsql 这句话 编译是没有问题的,连接会出问题。但是Qt Creator把 编译和链接统一在一块儿了,所以也就会产生这样的错误。至于自动识别的问题,我认为没有必要,比如,你要使用一个新的库 例如 OpenCV,不论什么编译器都没有办法自动识别的,如果还是觉得不方便,可以修改Qt的默认 Qmake 生成模板。
3. 下面是一段样例代码
QSqlDatabase dbconn = QSqlDatabase::addDatabase("QODBC");
dbconn.setDatabaseName("mssqltest"); // DSN
dbconn.setHostName("127.0.0.1");
dbconn.setPort(1433);
dbconn.setUserName("sa");
dbconn.setPassword("dba");
dbconn.open();
至于编码问题,如下
QTextCodec *codec = QTextCodec::codecForName("GB18030-0");
QString SQL_string = codec->fromUnicode(YourStringHere);
------解决方案--------------------
新手来学习下
应该还有很长的路要走。。
------解决方案--------------------
来学习学习的 望大虾们指教~
------解决方案--------------------
编译前看看Makefile文件,把头文件、库文件加全。
中文系统下,支持中文的编码设置:
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
------解决方案--------------------
------解决方案--------------------
1 configure -help
-qt-sql-<driver> ... Enable a SQL <driver> in the Qt Library.
-plugin-sql-<driver> Enable SQL <driver> as a plugin to be linked to at run
time.
Available values for <driver>:
mysql
psql
oci
odbc
tds
db2
+ sqlite
sqlite2
ibase
(drivers marked with a '+' have been detected as
available on this system)
2.
QT缺省使用了core和gui库。如果要使用webkit phonon dbus testlib script svg qt3support sql xmlpatterns xml opengl gui network core这些库,pro中加入:QT+=xx
只在qmake -project后加入就可以了,以后改动了文件只需要make就可以。
3.
编码问题,参见3楼兄弟
QTextCodec *codec = QTextCodec::codecForName("GB18030-0");
QString SQL_string = codec->fromUnicode(YourStringHere);