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

开发 后端
本文介绍了C#向Sql Server中插入记录时单引号的两种处理方式。

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.  
  5. //单引号用""替换,以插入到sql server中;   
  6. string title=textbox1.text.replace("","");   
  7. string content=textbox2.text.replace("","");   
  8. if(title.trim()==""||content.trim()=="")return;   
  9. string insertcmd =@"insert into mybbs (title,content) values("+ title + "," +content+")";   
  10.  
  11. sqlcommand mycommand = new sqlcommand(insertcmd,coredb);   
  12. coredb.open();   
  13. sqldatareader myreader = mycommand.executereader();   
  14. myreader.close();   
  15. coredb.close();   
  16.  

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.  
  5. string title=textbox1.text;   
  6. string content=textbox2.text;   
  7.  
  8. if(title.trim()==""||content.trim()=="")return;   
  9.  
  10. //insertmybbsproc是向mybbs中插入数据的procedure:   
  11. sqlcommand insertcmd = new sqlcommand("insertmybbsproc",coredb);   
  12.  
  13. insertcmd.commandtype=commandtype.storedprocedure;//命令类型为存储过程;下面定义参数对象:   
  14. sqlparameter prm1=new sqlparameter("@title", sqldbtype.char,160);   
  15. sqlparameter prm2=new sqlparameter("@author", sqldbtype.char,20);   
  16. sqlparameter prm3=new sqlparameter("@content",sqldbtype.ntext,1073741823);   
  17. prm1.direction=parameterdirection.input;   
  18. prm2.direction=parameterdirection.input;   
  19. prm3.direction=parameterdirection.input;   
  20. //为insertcmd添加sql参数:   
  21. insertcmd.parameters.add(prm1);   
  22. insertcmd.parameters.add(prm2);   
  23. insertcmd.parameters.add(prm3);   
  24. //为sql参数赋值:   
  25. prm1.value=title;   
  26. prm2.value="david euler";   
  27. prm3.value=content;   
  28.  
  29. coredb.open();   
  30. int recordsaffected=insertcmd.executenonquery();   
  31. if(recordsaffected==1)response.write("< script>alert(""插入成功" +");< /script>");   
  32. coredb.close();   

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

【编辑推荐】

  1. C# Thread类的应 用
  2. C#线程:BeginInvoke和EndInvoke方法
  3. 学习C#:Attribute与Property
  4. C#编码标准66条
  5. C#委托事件及自定义事件的处理 

责任编辑:book05 来源: cnblogs
相关推荐

2009-08-12 16:39:50

C#向Excel插入数

2009-08-24 15:41:50

C#连接SQL Ser

2009-08-06 18:15:13

C# SQL Serv

2010-09-13 10:43:22

SQL Server

2010-07-22 10:45:45

SQL Server数

2011-07-18 10:45:55

C#SQL Server数

2009-02-05 15:32:23

接口委托

2010-11-11 10:53:22

SQL Server遍

2009-08-17 18:30:29

C# SQL Serv

2024-04-10 12:56:00

C#批量插入开发

2011-04-01 14:14:42

SQL Server空值

2009-08-24 16:11:35

C#项目开发

2009-05-26 10:21:07

2011-04-06 16:25:47

SQL Server

2011-04-01 16:48:28

SQL Server

2009-09-04 17:29:01

C#创建SQL Ser

2009-08-03 14:17:18

C#连接AccessC#连接SQL Ser

2023-01-03 11:22:23

C#代码SQL Server

2009-08-12 13:11:24

C#实现远程线程插入

2009-09-04 17:44:35

点赞
收藏

51CTO技术栈公众号