• 7952阅读
  • 13回复

请问个qt和sqlite的问题。 [复制链接]

上一主题 下一主题
离线wf361
 
只看楼主 倒序阅读 楼主  发表于: 2008-09-09
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
在qt中用用如下语句来查询数据库
char *sql="select pwd from user where name=lineEdit1->text()";
rc = sqlite3_get_table(db,sql, &dbResult, &nRow, &nColumn, &errmsg);
为何总是查询出错?
原因是在name=lineEdit1->text()这块,我应该如何解决?数据库中name字段是text类型的。、
谢谢各位了。

我的开发环境redhat 9+qt3.3.4+sqlite3.6.2
[ 此贴被wf361在2008-09-10 10:14重新编辑 ]
离线mecland
只看该作者 1楼 发表于: 2008-09-09
SQL语句问题
应该为写为:
char *sql;
sprintf(sql, "select pwd from user where name=%s", lineEdit1->text().ascii());
离线wf361
只看该作者 2楼 发表于: 2008-09-09
谢谢mecland 的解答。
但我将SQL语句替换成:
char *sql=NULL;
sprintf(sql, "select pwd from user where name=%s", lineEdit1->text().ascii());
后编译通过,运行时出现了segmentation 错误。
离线wf361
只看该作者 3楼 发表于: 2008-09-09
发现是sprintf(sql, "select pwd from user where name=%s", lineEdit1->text().ascii());这句话导致segmentation 错误的。
离线taomic

只看该作者 4楼 发表于: 2008-09-09
char sql[100];
sprintf(sql, "select pwd from user where name=%s", lineEdit1->text().ascii());
离线wf361
只看该作者 5楼 发表于: 2008-09-09
谢谢taomic ,能运行了,但如果数据库中name字段的内容为字母则查询不起来,只有为数字才可以查询。
估计原因是lineEdit1->text().ascii()的问题,lineEdit1->text().ascii()能解释下不?网上都查不到,小弟刚刚接触,谢谢大家了。
离线wf361
只看该作者 6楼 发表于: 2008-09-09
对于name字段的值为字母的,只有在输入时加上‘ ’引号才可以查询到。奇怪...
离线faytitan
只看该作者 7楼 发表于: 2008-09-09
lineEdit->text().trimmed()
这样就不管字母还是数字都行
离线wf361
只看该作者 8楼 发表于: 2008-09-09
引用第7楼faytitan于2008-09-09 21:26发表的  :
lineEdit->text().trimmed()
这样就不管字母还是数字都行

编译出错, no matching function for call to `QString::trimmed()'
离线wf361
只看该作者 9楼 发表于: 2008-09-09
引用第7楼faytitan于2008-09-09 21:26发表的  :
lineEdit->text().trimmed()
这样就不管字母还是数字都行

敲错了?Qstring好像没这个成员函数。我再看看,谢谢啦。
离线wf361
只看该作者 10楼 发表于: 2008-09-09
我的开发环境redhat 9+qt3.3.4+sqlite3.6.2
离线wf361
只看该作者 11楼 发表于: 2008-09-10
哪位大哥能帮忙看看啊...谢谢了。
离线wf361
只看该作者 12楼 发表于: 2008-09-11
期待高手指点一二。谢谢...
离线jsncwucong
只看该作者 13楼 发表于: 2009-06-19
关于 “编译出错,no matching function for call to `QString::trimmed()'  ” 的问题,很有可能是版本没到QT4以上,可以试试 QString::stripWhiteSpace()。在QT4以上可以用trimmed()函数。
快速回复
限100 字节
 
上一个 下一个