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

本文介绍了在asp.net中使用C#向SQL Server数据库表mybbs插入记录时遇到的单引号问题。提供了两种解决方案:一是用两个单引号替换单引号,二是使用存储过程。详细展示了替换方法和存储过程的创建及调用过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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=http://developer.51cto.com/art/200908/title;   
prm2.value=http://developer.51cto.com/art/200908/"david euler";   
prm3.value=http://developer.51cto.com/art/200908/content;   
 
coredb.open();   
int recordsaffected=insertcmd.executenonquery();   
if(recordsaffected==1)response.write("< script>alert("+ "插入成功" +");< /script>");   
coredb.close();   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值