• 6284阅读
  • 8回复

如何动态建表 [复制链接]

上一主题 下一主题
离线pan356
 
只看楼主 倒序阅读 楼主  发表于: 2011-06-15
   QSqlQuery query;
    query.exec("CREATE TABLE patientnamelineEdit->text().trimmed() ("
   "ImageID INT PRIMARY KEY , "
   "ImageName VARCHAR(10) , "
   "fromID INT NOT NULL, "
   "path varbinary(MAX) NOT NULL)");

想通过一个lineEdit的内容来命名表,结果编译提示:
[Microsoft][ODBC SQL Server Driver][SQL Server]'-' 附近有语法错误。 [Microsoft][ODBC SQL Server Driver][SQL Server]无法预定义语句。
也就是 patientnamelineEdit->text().trimmed() 这里报错了。
如果固定了表名,就没有报错。
该怎么实现表名动态化?
离线dwhome

只看该作者 1楼 发表于: 2011-06-15
QString("%1").arg(patientnamelineEdit->text().trimmed() )
离线pan356
只看该作者 2楼 发表于: 2011-06-15
双引号报错:缺少“)”在“常量”的前面
但检查是没有缺少的,不知为何。

改为单引号后
QString('1%').arg(patientnamelineEdit->text().trimmed())
编译出现与1楼相同的错误。

这里引申多一个问题,但引号和双引号有什么区别?
离线jdwx

只看该作者 3楼 发表于: 2011-06-15
QSqlQuery query;
    query.exec(QString("CREATE TABLE") +  patientnamelineEdit->text().trimmed() +
  QString( "ImageID INT PRIMARY KEY , " )+
  QString( "ImageName VARCHAR(10) , ") +
  QString( "fromID INT NOT NULL, " )+
  QString( "path varbinary(MAX) NOT NULL"));
用QStringList能看着简单点。
SQL语句非常容易写错,执行前用QMessageBox显示一下看看有没有错误。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线pan356
只看该作者 4楼 发表于: 2011-06-15
还是不行,编译是直接跳过程序了
离线alexltr

只看该作者 5楼 发表于: 2011-06-15
试试看:
sqlString=QString("CREATE TABLE " ) +  
              patientnamelineEdit->text().trimmed() +
              QString( " (ImageID INT PRIMARY KEY , " )+
              QString( "ImageName VARCHAR(10) , ") +
              QString( "fromID INT NOT NULL, " )+
              QString( "path varbinary(MAX) NOT NULL)");

query.exec(sqlString);

我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线XChinux

只看该作者 6楼 发表于: 2011-06-15
无语了,这样的问题都发这么多帖说,自己花点心思看看编译结果说什么,学不会调试那怎么能行。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线pan356
只看该作者 7楼 发表于: 2011-06-15
结果就是这个啊:
[Microsoft][ODBC SQL Server Driver][SQL Server]'-' 附近有语法错误。 [Microsoft][ODBC SQL Server Driver][SQL Server]无法预定义语句。
知道哪里错了,但不会改啊
离线jdwx

只看该作者 8楼 发表于: 2011-06-16
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个