A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李冠彬 中级黑马   /  2012-12-27 00:15  /  3402 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李冠彬 于 2013-1-3 21:22 编辑

代码:
        "insert into select_music (music_name) values ('"+TextBox1.Text+"')"
//这里参数为变量值,即textbox中的内容。现在textbox中内容为:Jem - It's Amazing.mp3 ;

计算机经过赋值、字符串拼接后,执行语句实际为:
         "insert into select_music (music_name) values ('Jem - It's Amazing.mp3 ')"        

好了,问题出现了。歌名中的It‘s,含有一个单引号。报错了。
请问这怎么解决?不要怀疑歌曲名字。名字没问题,也不能改,因为很多歌内有单引号。
求高手指点。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

9 个回复

倒序浏览
用双单引号试试,就是写两个单引号.

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
赵小江 发表于 2012-12-27 00:17
用双单引号试试,就是写两个单引号.

你说的是直接把单引号改成双引号吗?    好几种都试了,不行。
回复 使用道具 举报
自己顶一下,求高手……
回复 使用道具 举报
李冠彬 发表于 2012-12-27 15:01
你说的是直接把单引号改成双引号吗?    好几种都试了,不行。

是用两个单引号'' ,就像两个加号++
回复 使用道具 举报
赵小江 发表于 2012-12-27 19:55
是用两个单引号'' ,就像两个加号++

你好,感谢你的支持。可是不行啊,你可以试试,我没试出来。只要是单引号,就会跟歌曲里的单引号组对。就出错了。
回复 使用道具 举报
不要使用 拼接字符串的方法来使用 sql语句,特别是这种可以在 文本框中 输入 查询的值得时候 用 拼字符串的方法会出现  注入漏洞攻击。 正确的方法是 使用 参数化查询。

"insert into select_music (music_name) values ('"+TextBox1.Text+"')"
这个可以改成这样
  Insert into Select_music(music_name) values(@music_name);
   cmd.Parameters.Add(new SqlParameter("@music_name",TextBox1.Text));

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 李冠彬 于 2012-12-27 20:29 编辑
王继光 发表于 2012-12-27 20:19
不要使用 拼接字符串的方法来使用 sql语句,特别是这种可以在 文本框中 输入 查询的值得时候 用 拼字符串的 ...

嗯,谢谢,你说的这个我真不了解,值得学习。
其实我那个是为了方便大家理解,没有TextBox1,数据是从数据库取值,赋值给DataGridView,歌名显示,地址是隐藏字段。没有用户输入的语句。倒是有个地方可以由用户输入,就是查询歌曲时。
另外那个单引号的问题有想法吗?
回复 使用道具 举报
李冠彬 发表于 2012-12-27 20:11
你好,感谢你的支持。可是不行啊,你可以试试,我没试出来。只要是单引号,就会跟歌曲里的单引号组对。就 ...

values ('Jem - It''s Amazing.mp3 ') 我这样写成功了.
回复 使用道具 举报
本帖最后由 李冠彬 于 2012-12-27 21:17 编辑
赵小江 发表于 2012-12-27 20:28
values ('Jem - It''s Amazing.mp3 ') 我这样写成功了.

你怎么操控的变量呢?那个地方不能改,(不能把电脑上存的歌曲名字改了)。不是自己写的东西。
如果判断一下,indexOf,去掉单引号,也可以。违背了点原则。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马