如何处理C#向SQL Server中插入记录时的单引号问题

这篇文章主要介绍了如何处理C#向SQL Server中插入记录时的单引号问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

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

表mybbs的格式定义如下:

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

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

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

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

1) 创建存储过程:

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

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

declare @title char(160)   declare @author char(20)   declare @content char(600)   set @title=test title 3   set @author=david euler 3   set @content=it is the content 3   exec insertmybbsproc @title, @author, @content

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

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

感谢你能够认真阅读完这篇文章,希望小编分享的“如何处理C#向SQL Server中插入记录时的单引号问题”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注行业资讯频道,更多相关知识等着你来学习!