如何向数据库中插入带有单引号(')的字符串?在线等待

eeixy2000 2004-11-20 09:36:32
我用SQL语句往数据库某字段(字符型)中插入字符串,但是当该字符串中带有单引号('')时,好像就会出错!表现为插入的字符串被从单引号处截断,然后SQL语句当然就出错拉!如下:
CString strSQL;
strSQL.Format("Insert into MyTable(Name) Values('%s')", "My Name is 'xy'");
...全文
755 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
eeixy2000 2004-11-23
  • 打赏
  • 举报
回复
我用Oracle试了一下,却是可以,下面我来结贴。谢谢大家!
shines77 2004-11-22
  • 打赏
  • 举报
回复
既然楼上的朋友问了,我就多说几句吧

----------------------------------------------------------------
原贴内容:
CString strSQL;
CString strRequest;
strRequest = "My Name is 'xy'";
strRequest.Replace("'", "''");
strSQL.Format("Insert into MyTable(Name) Values('%s')", strRequest);
-----------
您好,我请教个问题,如果我的sql很多,既想处理',又想省事,如何做啊?
我的sql都是str.Format(....);的,里面的string才是要处理的~
别告诉我sql里每个从界面弄来的变量都要replace下~

你可以写成一个函数,比如:
CString CheckString(CString strInput)
{
strInput.Replace("'", "''");
return strInput;
}

如果是过滤从网页里过来的变量,可以这么写:
CString CheckRequestString(CString strRequest)
{
strRequest.Replace("&", "&");
strRequest.Replace("<", ">");
strRequest.Replace(">", "<");
strRequest.Replace("'", "''");
return strRequest;
}

上面我只是举例,替换如果有错请指正
某鸟 2004-11-22
  • 打赏
  • 举报
回复
汗~原来都用过~
shines77 2004-11-22
  • 打赏
  • 举报
回复
如果楼主还没有理解,我再详细一点

CString strSQL;
CString strRequest;
strRequest = "My Name is 'xy'";
strRequest.Replace("'", "''");
strSQL.Format("Insert into MyTable(Name) Values('%s')", strRequest);

Replace("'", "''"); 这种方法, ASP也是这么干的,引号里的字符串用''表示一个',外面配对的'xxxxxxx'是表示字符串的边界
eeixy2000 2004-11-22
  • 打赏
  • 举报
回复
非常感谢大家!
我记得以前用的是Access2000,使用ADO访问技术,是出现了单引号的如上问题;
现在我用的SQL Server2000,因为Access的经验,我好像在遇到此类问题时,作了回避,因此是否一定在SQL Server2000中出现过该问题,不影响不是很深;
另外,前一段时间(包括现在)用的Oracle817不知是否有问题,我要好好试一试,如果有结果,我会贴出来与大家共享!
再次感谢大家的热心!谢谢!
shaolin13108 2004-11-21
  • 打赏
  • 举报
回复
替换掉所有回车符
3m2u 2004-11-21
  • 打赏
  • 举报
回复
楼主表怀疑啦,这是正解啦,大家都是这么做滴~~
oyljerry 2004-11-21
  • 打赏
  • 举报
回复
替换字符,用CString的Replace
gooyan 2004-11-21
  • 打赏
  • 举报
回复
遍历字符串,把一个'换成两个''就可以了。这是由于SQL Server所限定的。
select * from a where a='bbbbb' and b= 'cccccccc'
看到没,SQL语句中字符串都是用''标示的。如果a='bbbbbb'中得bbbbbbb是bbbb'bb哪肯定是有问题了
要避免这个问题,也只有找到所有bbbbb'bb中'得位置,然后换成bbbbb''bb就可以了
某鸟 2004-11-21
  • 打赏
  • 举报
回复
楼主还没说你用什么数据库呢,根据数据库决定的!
wangjiatom 2004-11-20
  • 打赏
  • 举报
回复
strSQL.Repace( "'", "''");
就这么简单
eeixy2000 2004-11-20
  • 打赏
  • 举报
回复
(1) 不知是否可行,如果可行,一定送分;首先感谢你!
(2) 另外,我觉得你的这种解决方法好像不是很好,是否有更好的方法,请大家共同讨论;
再次表示感谢!
DebugXP 2004-11-20
  • 打赏
  • 举报
回复
cstring::replace

strData.Replace("'","''");
eeixy2000 2004-11-20
  • 打赏
  • 举报
回复
严格说来,我的问题是:
CString strSQL,strData;
strSQL.Format("Insert into MyTable(Name) Values('%s')", strData);
这里的strData里是否含有单引号,是由程序在运行时确定的,比如从用户的输入中获得,那么该如何解决!
DebugXP 2004-11-20
  • 打赏
  • 举报
回复

strSQL.Format("Insert into MyTable(Name) Values('%s')", "My Name is ''xy''");

4,011

社区成员

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

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