CString strSQL;
strSQL.Format("Insert into MyTable(Name) Values('%s')", "My Name is 'xy'");
15 个解决方案
#1
strSQL.Format("Insert into MyTable(Name) Values('%s')", "My Name is ''xy''");
#2
严格说来,我的问题是:
CString strSQL,strData;
strSQL.Format("Insert into MyTable(Name) Values('%s')", strData);
这里的strData里是否含有单引号,是由程序在运行时确定的,比如从用户的输入中获得,那么该如何解决!
CString strSQL,strData;
strSQL.Format("Insert into MyTable(Name) Values('%s')", strData);
这里的strData里是否含有单引号,是由程序在运行时确定的,比如从用户的输入中获得,那么该如何解决!
#3
cstring::replace
strData.Replace("'","''");
strData.Replace("'","''");
#4
(1) 不知是否可行,如果可行,一定送分;首先感谢你!
(2) 另外,我觉得你的这种解决方法好像不是很好,是否有更好的方法,请大家共同讨论;
再次表示感谢!
(2) 另外,我觉得你的这种解决方法好像不是很好,是否有更好的方法,请大家共同讨论;
再次表示感谢!
#5
strSQL.Repace( "'", "''");
就这么简单
就这么简单
#6
替换掉所有回车符
#7
楼主还没说你用什么数据库呢,根据数据库决定的!
#8
遍历字符串,把一个'换成两个''就可以了。这是由于SQL Server所限定的。
select * from a where a='bbbbb' and b= 'cccccccc'
看到没,SQL语句中字符串都是用''标示的。如果a='bbbbbb'中得bbbbbbb是bbbb'bb哪肯定是有问题了
要避免这个问题,也只有找到所有bbbbb'bb中'得位置,然后换成bbbbb''bb就可以了
select * from a where a='bbbbb' and b= 'cccccccc'
看到没,SQL语句中字符串都是用''标示的。如果a='bbbbbb'中得bbbbbbb是bbbb'bb哪肯定是有问题了
要避免这个问题,也只有找到所有bbbbb'bb中'得位置,然后换成bbbbb''bb就可以了
#9
替换字符,用CString的Replace
#10
楼主表怀疑啦,这是正解啦,大家都是这么做滴~~
#11
非常感谢大家!
我记得以前用的是Access2000,使用ADO访问技术,是出现了单引号的如上问题;
现在我用的SQL Server2000,因为Access的经验,我好像在遇到此类问题时,作了回避,因此是否一定在SQL Server2000中出现过该问题,不影响不是很深;
另外,前一段时间(包括现在)用的Oracle817不知是否有问题,我要好好试一试,如果有结果,我会贴出来与大家共享!
再次感谢大家的热心!谢谢!
我记得以前用的是Access2000,使用ADO访问技术,是出现了单引号的如上问题;
现在我用的SQL Server2000,因为Access的经验,我好像在遇到此类问题时,作了回避,因此是否一定在SQL Server2000中出现过该问题,不影响不是很深;
另外,前一段时间(包括现在)用的Oracle817不知是否有问题,我要好好试一试,如果有结果,我会贴出来与大家共享!
再次感谢大家的热心!谢谢!
#12
如果楼主还没有理解,我再详细一点
CString strSQL;
CString strRequest;
strRequest = "My Name is 'xy'";
strRequest.Replace("'", "''");
strSQL.Format("Insert into MyTable(Name) Values('%s')", strRequest);
Replace("'", "''"); 这种方法, ASP也是这么干的,引号里的字符串用''表示一个',外面配对的'xxxxxxx'是表示字符串的边界
CString strSQL;
CString strRequest;
strRequest = "My Name is 'xy'";
strRequest.Replace("'", "''");
strSQL.Format("Insert into MyTable(Name) Values('%s')", strRequest);
Replace("'", "''"); 这种方法, ASP也是这么干的,引号里的字符串用''表示一个',外面配对的'xxxxxxx'是表示字符串的边界
#13
汗~原来都用过~
#14
既然楼上的朋友问了,我就多说几句吧
----------------------------------------------------------------
原贴内容:
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;
}
上面我只是举例,替换如果有错请指正
----------------------------------------------------------------
原贴内容:
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;
}
上面我只是举例,替换如果有错请指正
#15
我用Oracle试了一下,却是可以,下面我来结贴。谢谢大家!
#1
strSQL.Format("Insert into MyTable(Name) Values('%s')", "My Name is ''xy''");
#2
严格说来,我的问题是:
CString strSQL,strData;
strSQL.Format("Insert into MyTable(Name) Values('%s')", strData);
这里的strData里是否含有单引号,是由程序在运行时确定的,比如从用户的输入中获得,那么该如何解决!
CString strSQL,strData;
strSQL.Format("Insert into MyTable(Name) Values('%s')", strData);
这里的strData里是否含有单引号,是由程序在运行时确定的,比如从用户的输入中获得,那么该如何解决!
#3
cstring::replace
strData.Replace("'","''");
strData.Replace("'","''");
#4
(1) 不知是否可行,如果可行,一定送分;首先感谢你!
(2) 另外,我觉得你的这种解决方法好像不是很好,是否有更好的方法,请大家共同讨论;
再次表示感谢!
(2) 另外,我觉得你的这种解决方法好像不是很好,是否有更好的方法,请大家共同讨论;
再次表示感谢!
#5
strSQL.Repace( "'", "''");
就这么简单
就这么简单
#6
替换掉所有回车符
#7
楼主还没说你用什么数据库呢,根据数据库决定的!
#8
遍历字符串,把一个'换成两个''就可以了。这是由于SQL Server所限定的。
select * from a where a='bbbbb' and b= 'cccccccc'
看到没,SQL语句中字符串都是用''标示的。如果a='bbbbbb'中得bbbbbbb是bbbb'bb哪肯定是有问题了
要避免这个问题,也只有找到所有bbbbb'bb中'得位置,然后换成bbbbb''bb就可以了
select * from a where a='bbbbb' and b= 'cccccccc'
看到没,SQL语句中字符串都是用''标示的。如果a='bbbbbb'中得bbbbbbb是bbbb'bb哪肯定是有问题了
要避免这个问题,也只有找到所有bbbbb'bb中'得位置,然后换成bbbbb''bb就可以了
#9
替换字符,用CString的Replace
#10
楼主表怀疑啦,这是正解啦,大家都是这么做滴~~
#11
非常感谢大家!
我记得以前用的是Access2000,使用ADO访问技术,是出现了单引号的如上问题;
现在我用的SQL Server2000,因为Access的经验,我好像在遇到此类问题时,作了回避,因此是否一定在SQL Server2000中出现过该问题,不影响不是很深;
另外,前一段时间(包括现在)用的Oracle817不知是否有问题,我要好好试一试,如果有结果,我会贴出来与大家共享!
再次感谢大家的热心!谢谢!
我记得以前用的是Access2000,使用ADO访问技术,是出现了单引号的如上问题;
现在我用的SQL Server2000,因为Access的经验,我好像在遇到此类问题时,作了回避,因此是否一定在SQL Server2000中出现过该问题,不影响不是很深;
另外,前一段时间(包括现在)用的Oracle817不知是否有问题,我要好好试一试,如果有结果,我会贴出来与大家共享!
再次感谢大家的热心!谢谢!
#12
如果楼主还没有理解,我再详细一点
CString strSQL;
CString strRequest;
strRequest = "My Name is 'xy'";
strRequest.Replace("'", "''");
strSQL.Format("Insert into MyTable(Name) Values('%s')", strRequest);
Replace("'", "''"); 这种方法, ASP也是这么干的,引号里的字符串用''表示一个',外面配对的'xxxxxxx'是表示字符串的边界
CString strSQL;
CString strRequest;
strRequest = "My Name is 'xy'";
strRequest.Replace("'", "''");
strSQL.Format("Insert into MyTable(Name) Values('%s')", strRequest);
Replace("'", "''"); 这种方法, ASP也是这么干的,引号里的字符串用''表示一个',外面配对的'xxxxxxx'是表示字符串的边界
#13
汗~原来都用过~
#14
既然楼上的朋友问了,我就多说几句吧
----------------------------------------------------------------
原贴内容:
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;
}
上面我只是举例,替换如果有错请指正
----------------------------------------------------------------
原贴内容:
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;
}
上面我只是举例,替换如果有错请指正
#15
我用Oracle试了一下,却是可以,下面我来结贴。谢谢大家!