主题:两个vSQL中使用SQL语言的头疼问题
zxl7766
[专家分:70] 发布于 2006-07-16 10:22:00
最近在编数据库的课程设计,前台使用VC++6.0,后台是SQLSercer2000。
突然遇到两个很头疼的问题:
vSQL = "INSERT INTO Storage (BookID, DepotID, Booknam, Couindepot) VALUES('" + BookID + "','" + DepotID + "','" + Bookname + "'," + count + ")";
编译错误,提示说:error C2666: '+' : 4 overloads have similar conversions
vSQL = "UPDATE Storage SET Couindepot=" + count + " where BookID='" + BookID + "' AND DepotID='" + DepotID +"'";
编译也出错,提示说:error C2110: cannot add two pointers
其中BookID、DepotID、Bookname都是CString型,count是int型。
由于我是初次编写数据库运用程序,对这两个错误感到莫名其妙,头疼、头疼、头疼!!
请教各位大虾了!!![em2]
回复列表 (共9个回复)
沙发
wangsdong [专家分:21390] 发布于 2006-07-16 10:33:00
vSQL你把这个定义成什么类型?
板凳
zxl7766 [专家分:70] 发布于 2006-07-16 10:56:00
定义成 _bstr_t 型了。
3 楼
wangsdong [专家分:21390] 发布于 2006-07-16 11:05:00
vSQL = "INSERT INTO Storage(BookID, DepotID, Booknam, Couindepot) VALUES('" + BookID + "','" + DepotID + "','" + Bookname + "'," + count + ")";
去掉storage与"("之间的空格试试
4 楼
zxl7766 [专家分:70] 发布于 2006-07-16 11:24:00
不行啊,问题依旧,可能不是SQL语句格式的问题。[em18]
5 楼
wangsdong [专家分:21390] 发布于 2006-07-16 11:37:00
vSQL = "INSERT INTO Storage (BookID, DepotID, Booknam) VALUES('" + BookID + "','" + DepotID + "','" + Bookname + "')";
去掉最后一个变量试试。
6 楼
zxl7766 [专家分:70] 发布于 2006-07-16 12:25:00
谢谢。行了,第一个错误没了。
可是这是为什么呢?要是我非得要插入那一项“Couindepot”该怎么办呢?[em18]
7 楼
wangsdong [专家分:21390] 发布于 2006-07-16 12:33:00
vSQL = "INSERT INTO Storage (BookID, DepotID, Booknam, Couindepot) VALUES('" + BookID + "','" + DepotID + "','" + Bookname + "','" + count + "')";
现在试试
8 楼
zxl7766 [专家分:70] 发布于 2006-07-16 12:55:00
还是老问题啊。
不过我发现,要是在vSQL之前添加如下语句:
CString strcount;
strcount.Format("%d", count);
然后把vSQL赋值语句改为:
vSQL = "INSERT INTO Storage (BookID, DepotID, Booknam, Couindepot) VALUES('" + BookID + "','" + DepotID + "','" + Bookname + "'," + [color=FF0000]strcount[/color] + ")";
这样编译倒通过了。第二个错误用这个办法也能解决。
是不是在vSQL中使用SQL语句," + + "中间的变量必须是CString型的?
9 楼
20030018 [专家分:0] 发布于 2006-10-18 20:21:00
我也有一个类似的问题:
vlong gcd( const vlong &X, const vlong &Y )
{
vlong x=X, y=Y;
while (1)
{
[color=FF00FF]if(y==0.0)return x;[/color]
x = x % y;
[color=FF00FF]if(x==0.0)return y;[/color]
y = y % x;
}
}
vlong i=0;
[color=FF00FF]if(i<0) i += m;[/color]
error C2666: '==' : 2 overloads have similar conversions
error C2666: '==' : 2 overloads have similar conversions
error C2666: '<' : 2 overloads have similar conversions
我来回复