sql insert有特殊字符

jylijie 2010-04-09 03:31:44
insert into NewsInfo (title,date,author,sourse,contents)
values ('bbb','bbb','bbb','bbb','展览时间上海新国际博览中心'上海市龙阳路2345号'')

程序中该怎么改
...全文
678 29 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
xrongzhen 2010-04-09
  • 打赏
  • 举报
回复
你写个函数不就完了


public string ReplaceString(string strRes)
{
string strDes = null;
if (strRes.IndexOf("'", 1) > 0)
{
strDes = strRes.Replace("'", "\\'");
}
else
{
strDes = strRes;
}
return strDes;
}

//然后每个字段放入SQL之前调用一下
//如:info.Contents 换成ReplaceString(info.Contents)
jylijie 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 migercai 的回复:]
my god

楼主 你不要拼sql语句了
参数化吧
不要这么懒

就算你现在拼好了 以后也有被注入的危险
[/Quote]
你帮我参数化一下吧
sql = string.Format("insert into NewsInfo (title,date,author,sourse,contents)"
+ "values ('" + info.Title + "','" + info.Date + "','" + info.Author + "','" + info.Sourse + "','" + info.Contents + "')");
migercai 2010-04-09
  • 打赏
  • 举报
回复
my god

楼主 你不要拼sql语句了
参数化吧
不要这么懒

就算你现在拼好了 以后也有被注入的危险
jylijie 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 qq175691524 的回复:]
sql = string.Format("insert into NewsInfo (title,date,author,sourse,contents)"
+ "values ('" + @info.Title + "','" + @info.Date + "','" + @info.Author + "','" + \info.Sourse\ + "','" + @info.Conten……
[/Quote]

消息 8152,级别 16,状态 14,第 1 行
将截断字符串或二进制数据。
语句已终止。
qq175691524 2010-04-09
  • 打赏
  • 举报
回复
sql = string.Format("insert into NewsInfo (title,date,author,sourse,contents)"
+ "values ('" + @info.Title + "','" + @info.Date + "','" + @info.Author + "','" + \info.Sourse\ + "','" + @info.Contents.Replace("'","''") + "')");
wubing1111 2010-04-09
  • 打赏
  • 举报
回复
好像sql中單引號應該是''或''',才可以試一下這兩種是哪個我也不記得了
vip__888 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 lost_painting 的回复:]
看完在說吧,8楼哪里是参数化,8楼是错误化.

参数化如下:

C# code

string SqlStr = "select ColA from ( select ColA = 'bbb') A " +
"where ColA in (@a,@b,@c,@d,@e)";
SqlConn……
[/Quote]
这样是对的
如果有特殊字符 可使用

[fieldvalue]来使用
jylijie 2010-04-09
  • 打赏
  • 举报
回复
是的 是可行 我这个代码该怎么改
 using (SqlConnection conn = new SqlConnection(connstring))
{
string sql = "";
sql = string.Format("insert into NewsInfo (title,date,author,sourse,contents)"
+ "values ('" + @info.Title + "','" + @info.Date + "','" + @info.Author + "','" + @info.Sourse + "','" + @info.Contents + "')");
SqlCommand command = new SqlCommand(sql, conn);
conn.Open();
command.ExecuteNonQuery();
conn.Close();
}
鸭梨山大帝 2010-04-09
  • 打赏
  • 举报
回复
看完在說吧,8楼哪里是参数化,8楼是错误化.

参数化如下:

string SqlStr = "select ColA from ( select ColA = 'bbb') A " +
"where ColA in (@a,@b,@c,@d,@e)";
SqlConnection conn = new SqlConnection("User ID=xx;PWD=xx;Data Source=xx;Initial Catalog=xx;");
SqlCommand cmd = new SqlCommand(SqlStr, conn);
SqlDataReader dr = null;
SqlParameterCollection Paras = cmd.Parameters;
Paras.AddWithValue("@a", "bbb");
Paras.AddWithValue("@b", "bbb");
Paras.AddWithValue("@c", "bbb");
Paras.AddWithValue("@d", "bbb");
Paras.AddWithValue("@e", "展览时间上海新国际博览中心'上海市龙阳路2345号'");
using (conn)
{
conn.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
Console.WriteLine(dr[0]);
}
}


[Quote=引用 9 楼 jol_boy 的回复:]
1、可以把插入的语句写成参数化的方式,如8楼的
2、可以把每个值replace一下,把单引号替换成两个单引号
[/Quote]
丰云 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 jylijie 的回复:]
这样怎么做
[/Quote]
我试验过拉,可行!
就这么做:
insert into NewsInfo (title,date,author,sourse,contents)
values ('bbb','bbb','bbb','bbb','展览时间上海新国际博览中心'+''''+'上海市龙阳路2345号'+'''')
jylijie 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 foren_whb 的回复:]
'北京市'+''''+'好'
insert into NewsInfo (title,date,author,sourse,contents)
values ('bbb','bbb','bbb','bbb','展览时间上海新国际博览中心'+''''+'上海市龙阳路2345号'+'''')
[/Quote]
这样怎么做
jylijie 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 foren_whb 的回复:]
引用 12 楼 jylijie 的回复:
8楼的行不通啊

3楼的你看了没有??
[/Quote]
怎么写?我的语句是这样,最好把''换成‘’
sql = string.Format("insert into NewsInfo (title,date,author,sourse,contents)"
+ "values ('" + info.Title + "','" + info.Date + "','" + info.Author + "','" + info.Sourse + "','" + info.Contents + "')");
丰云 2010-04-09
  • 打赏
  • 举报
回复
'北京市'+''''+'好'
insert into NewsInfo (title,date,author,sourse,contents)
values ('bbb','bbb','bbb','bbb','展览时间上海新国际博览中心'+''''+'上海市龙阳路2345号'+'''')
sh_suyuelin 2010-04-09
  • 打赏
  • 举报
回复
Replace("'", "'");
b3727180 2010-04-09
  • 打赏
  • 举报
回复
2楼的可以你试试
丰云 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 jylijie 的回复:]
8楼的行不通啊
[/Quote]
3楼的你看了没有??
b3727180 2010-04-09
  • 打赏
  • 举报
回复
8 楼的是参数话 你加转义字符
jylijie 2010-04-09
  • 打赏
  • 举报
回复
8楼的行不通啊
migercai 2010-04-09
  • 打赏
  • 举报
回复
\,
Sql转义好像没用吧

要用两个单引号来标识字符串中的单引号
porschev 2010-04-09
  • 打赏
  • 举报
回复
'展览时间上海新国际博览中心'上海市龙阳路2345号''

要么把中间的两个单引号去掉..

要么在前面加转义字符..
加载更多回复(9)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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