sql语句中使用变量的问题

feiyounger 2008-01-04 04:52:11
sSql = "CREATE TABLE table1 (Level Double,Prob Double)";
database.ExecuteSQL(sSql);
上面的写法在程序中没有问题

而现在我想把table1变为变量,
CString str;
sSql.Format("CREATE TABLE " + str + " (Level TEXT,Prob NUMBER)");
database.ExecuteSQL(sSql);
上面的写法为什么就不可以呢?

怎么把变量str加到sql语句中啊?

谢谢
...全文
136 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
mr.zhoux 2008-01-07
  • 打赏
  • 举报
回复
那个是经验问题,不只是保留字..遇到很正常- -|||
feiyounger 2008-01-07
  • 打赏
  • 举报
回复
给分完毕,感谢诸位
linxren 2008-01-06
  • 打赏
  • 举报
回复
早看到这个帖子就好了,前几天也碰到类似的问题
shakaqrj 2008-01-06
  • 打赏
  • 举报
回复
该数据库的保留字
遇到这些词的时候要加方括号
feiyounger 2008-01-05
  • 打赏
  • 举报
回复
为什么要在level和prob上加[]呢?
晕乎乎能否给解释一下啊?:)
想不明白
feiyounger 2008-01-05
  • 打赏
  • 举报
回复
楼上的晕呼呼你太牛了,加了两个括号就把困惑了我一整天的问题给解决了!!

太感谢了,接着看看还有没有新的问题

数据库真的是有点bt啊:(
mr.zhoux 2008-01-05
  • 打赏
  • 举报
回复
或者
sSql.Format("INSERT Into [%s] ([Level],[Prob]) VALUES (98,%d)",str,m_intValue);
数据库就有些bt..
mr.zhoux 2008-01-05
  • 打赏
  • 举报
回复
sSql.Format("INSERT Into %s ([Level],[Prob]) VALUES (98,%d)",str,m_intValue);
试下...
feiyounger 2008-01-05
  • 打赏
  • 举报
回复
按照杰子的方法,加上[]之后创建表没有问题了
可是当我向表中插入数据的时候怎么也插入不进去啊?
为什么?程序如下

str.Format("[%4.1fMHz]",pDoc->item[i].freq);
sSql = "CREATE TABLE ";
sSql += "yf";
sSql += " (Level NUMBER,Prob NUMBER)";
database.ExecuteSQL(sSql);

// 插入数值
sSql.Format("INSERT Into %s (Level,Prob) VALUES (98,%d)",str,m_intValue);
database.ExecuteSQL(sSql);

我用断点看过,sSql字符串没有问题,可以每当程序执行到后面那个个database.ExecuteSQL(sSql)的时候就自动退出了,不知道什么问题:(
feiyounger 2008-01-04
  • 打赏
  • 举报
回复
问题解决,楼上杰子是正确的!!
太感谢了!!!!
i_love_pc 2008-01-04
  • 打赏
  • 举报
回复
str.Format("[%fMHz]",400.0); //表名以数字开头的话用中括号包含一下
aa65433 2008-01-04
  • 打赏
  • 举报
回复
database.ExecuteSQL(sSql);
断点看下sSql的值 放入查询分析器中执行下,基本能断定出错点了
handsomerun 2008-01-04
  • 打赏
  • 举报
回复
sSql.Format("CREATE TABLE %s (Level TEXT,Prob NUMBER)",str);
ouyh12345 2008-01-04
  • 打赏
  • 举报
回复
先执行了再说
怀疑表的名字里不能有.
feiyounger 2008-01-04
  • 打赏
  • 举报
回复
这样还是把变量变成了常量,应该是可以
可是我的400.0也是从变量里得来的啊.
应该这样说更清楚一点
CString str;
double m_dFrequency
str.Format("%fMHz",m_dFrequency);

这样应该怎么办呢?为什么format不行呢?
ouyh12345 2008-01-04
  • 打赏
  • 举报
回复
直接在sql manager里执行
CREATE TABLE 400.0MHz (Level Double,Prob Double)

看行不?
feiyounger 2008-01-04
  • 打赏
  • 举报
回复
前面还有两句
CString str;
str.Format("%fMHz",400.0);

是不是这个format也有问题啊?
feiyounger 2008-01-04
  • 打赏
  • 举报
回复
试过了,还是不行:(
而改为sSql = "CREATE TABLE table1 (Level Double,Prob Double)";
就没问题

就是不能放进变量,郁闷
ouyh12345 2008-01-04
  • 打赏
  • 举报
回复
format语句不对
sSql = "CREATE TABLE ";
sSql += str;
sSql += " (Level TEXT,Prob NUMBER)";

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧