C#向SQLServer中插入记录时的问题

asp.net中使用c#, 向coredb.mybbs表中插入记录值(title, content)【文章的标题和内容】,由于content, title中可能包含单引号,直接使用sql的insert命令会报错,对此有两种处理方法,一种将单引号替换成两个单引号,第2种方法是使用存储过程。

站在用户的角度思考问题,与客户深入沟通,找到锦屏网站设计与锦屏网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广、空间域名、网页空间、企业邮箱。业务覆盖锦屏地区。

表mybbs的格式定义如下:

 
 
 
  1. create table [dbo].[mybbs] ( 
  2. [id] [bigint] identity (1, 1) not null , 
  3. [title] [char] (160) collate chinese_prc_ci_as null , 
  4. [author] [char] (20) collate chinese_prc_ci_as null , 
  5. [date_of_created] [datetime] null , 
  6. [abstract] [char] (480) collate chinese_prc_ci_as null , 
  7. [content] [ntext] collate chinese_prc_ci_as not null 
  8. ) on [primary] textimage_on [primary] 

1、C#向Sql Server中插入记录时单引好问题处理方法之一:将单引号用两个单引号替换:

 
 
 
  1. sqlconnection coredb=new sqlconnection(); 
  2. coredb.connectionstring= "workstation id=\"gqa-eric-lv\";packet size=4096;integrated security=sspi;" + 
  3. "data source=\"gqa-eric-lv\";persist security info=false;initial catalog=coredb"; 
  4. //单引号用""替换,以插入到sql server中; 
  5. string title=textbox1.text.replace("",""); 
  6. string content=textbox2.text.replace("",""); 
  7. if(title.trim()==""||content.trim()=="")return; 
  8. string insertcmd =@"insert into mybbs (title,content) values("+ title + "," +content+")"; 
  9. sqlcommand mycommand = new sqlcommand(insertcmd,coredb); 
  10. coredb.open(); 
  11. sqldatareader myreader = mycommand.executereader(); 
  12. myreader.close(); 
  13. coredb.close(); 

2、C#向Sql Server中插入记录时单引好问题处理方法之二:使用存储过程来插入

1) 创建存储过程:

 
 
 
  1. create proc insertmybbsproc(@title char(160), @author char(20), @content ntext) 
  2. as 
  3. insert into mybbs(title,author,content) values(@title, @author, @content) 

2) 查询分析器中测试存储过程:

 
 
 
  1. declare @title char(160) 
  2. declare @author char(20) 
  3. declare @content char(600) 
  4. set @title=test title 3 
  5. set @author=david euler 3 
  6. set @content=it is the content 3 
  7. exec insertmybbsproc @title, @author, @content 

3) c#中通过sqlcommand执行存储过程:

 
 
 
  1. sqlconnection coredb=new sqlconnection(); 
  2. coredb.connectionstring= "workstation id=\"gqa-eric-lv\";packet size=4096;integrated security=sspi;" + 
  3. "data source=\"gqa-eric-lv\";persist security info=false;initial catalog=coredb"; 
  4. string title=textbox1.text; 
  5. string content=textbox2.text; 
  6. if(title.trim()==""||content.trim()=="")return; 
  7. //insertmybbsproc是向mybbs中插入数据的procedure: 
  8. sqlcommand insertcmd = new sqlcommand("insertmybbsproc",coredb); 
  9. insertcmd.commandtype=commandtype.storedprocedure;//命令类型为存储过程;下面定义参数对象: 
  10. sqlparameter prm1=new sqlparameter("@title", sqldbtype.char,160); 
  11. sqlparameter prm2=new sqlparameter("@author", sqldbtype.char,20); 
  12. sqlparameter prm3=new sqlparameter("@content",sqldbtype.ntext,1073741823); 
  13. prm1.direction=parameterdirection.input; 
  14. prm2.direction=parameterdirection.input; 
  15. prm3.direction=parameterdirection.input; 
  16. //为insertcmd添加sql参数: 
  17. insertcmd.parameters.add(prm1); 
  18. insertcmd.parameters.add(prm2); 
  19. insertcmd.parameters.add(prm3); 
  20. //为sql参数赋值: 
  21. prm1.value=title; 
  22. prm2.value="david euler"; 
  23. prm3.value=content; 
  24. coredb.open(); 
  25. int recordsaffected=insertcmd.executenonquery(); 
  26. if(recordsaffected==1)response.write("< script>alert("+ "插入成功" +");< /script>"); 
  27. coredb.close(); 

以上就是C#向SQL Server中插入记录时的单引号问题的处理方法。

当前题目:C#向SQLServer中插入记录时的问题
网页网址:http://www.shufengxianlan.com/qtweb/news38/103188.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联