在C++builder中向sql server 插入数据,提示 missing right quote. 这里我没有缺位失右边引号

xflidengqiang2008 2015-11-25 11:46:13
String yy;// 这里yy的字符长度有2000个左右
Ccx->Close();
Ccx->CommandText="insert into temp(str1) select '"+yy+"' ";
Ccx->Execute();
...全文
295 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xflidengqiang2008 2015-11-26
  • 打赏
  • 举报
回复
引用 14 楼 ksrsoft 的回复:
用的什么版本cb6? ClientDataSet1->Params->ParamByName("p1")->AsWideString=yy; 或 ClientDataSet1->Params->ParamByName("p1")->Value = WideString(yy);
用的是CB5 ClientDataSet1->Params->ParamByName("p1")->Value = WideString(yy); 这个也不行
缘中人 2015-11-26
  • 打赏
  • 举报
回复
用的什么版本cb6? ClientDataSet1->Params->ParamByName("p1")->AsWideString=yy; 或 ClientDataSet1->Params->ParamByName("p1")->Value = WideString(yy);
xflidengqiang2008 2015-11-26
  • 打赏
  • 举报
回复
传入的内容是这样的: "id":"3","name":"张三","性别":"男","kmid":"151179","llr":"zhang",...............................................................等等大概有2000个字符,如果将这一个字符串放到数据库中直接执行,是正常的,但通过前台赋值传参数的方式,就不行了
xflidengqiang2008 2015-11-26
  • 打赏
  • 举报
回复
首先要谢谢 ksrsoft 一直在关注这个问题:



这个是有时候报错的提示,不报错的时候,插入进去的就是一个乱码文字

缘中人 2015-11-26
  • 打赏
  • 举报
回复
Parameters->ParamByName("p1") Execute 方式试了吗,还是报错? sql server 的 varchar (max) 支持2G长字符串。够用了。 或者给Ccx->CommandText赋值后看看值,是不是已经引号不匹配了,如果值里边本身有引号,建议用ParamByName方式赋值。
xflidengqiang2008 2015-11-26
  • 打赏
  • 举报
回复
各位兄弟们有知道的话,帮个忙,为什么会有这样的提示,要么就是有没有其它方法解决 传大量字符的操作
缘中人 2015-11-25
  • 打赏
  • 举报
回复
this->ADOQuery1->Close();
this->ADOQuery1->SQL->Text="insert into temp(str1) values(:p1)";
this->ADOQuery1->Parameters->ParamByName("p1")->Value=yy;
this->ADOQuery1->ExecSQL();
用参数方式赋值
xflidengqiang2008 2015-11-25
  • 打赏
  • 举报
回复
引用 8 楼 ksrsoft 的回复:
ClientDataSet1->Params->ParamByName("p1")->Value="ww";
长度没试过,真不知道,你可以试试
好像长度太长解析不成功一样,然后 会变成一个乱文字,字段长是设置 varchar (max)
缘中人 2015-11-25
  • 打赏
  • 举报
回复
ClientDataSet1->Params->ParamByName("p1")->Value="ww";
长度没试过,真不知道,你可以试试
xflidengqiang2008 2015-11-25
  • 打赏
  • 举报
回复
引用 6 楼 ksrsoft 的回复:
	ClientDataSet1->Close();
	ClientDataSet1->CommandText = "insert into temp(str1) values(:p1)";
	ClientDataSet1->ParamByName("p1")->Value="www";
	ClientDataSet1->Execute();
[C++ Error] Uddzl.cpp(537): E2316 'ParamByName' is not a member of 'TClientDataSet' ParamByName 这个不能用吧, 关键赋的值是 差不多有2000多个字符
缘中人 2015-11-25
  • 打赏
  • 举报
回复
	ClientDataSet1->Close();
	ClientDataSet1->CommandText = "insert into temp(str1) values(:p1)";
	ClientDataSet1->ParamByName("p1")->Value="www";
	ClientDataSet1->Execute();
xflidengqiang2008 2015-11-25
  • 打赏
  • 举报
回复
引用 4 楼 ksrsoft 的回复:
你用的是什么控件Ccx
是Tclientdataset,然后 随便命名为 Ccx了
缘中人 2015-11-25
  • 打赏
  • 举报
回复
你用的是什么控件Ccx
xflidengqiang2008 2015-11-25
  • 打赏
  • 举报
回复
Ptemp->Close(); Ptemp->FetchParams(); Ptemp->Params->ParamByName("@lr1")->AsString=yy; 这样也不行的
xflidengqiang2008 2015-11-25
  • 打赏
  • 举报
回复
这个是不能直接连接服务器数据库的,有没有其它方法?

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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