打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#向SQL Server中插入记录时的问题 - 51CTO.COM
    本文介绍了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中插入记录时的单引号问题的处理方法。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
1,基础知识点01(19.11.04)
Oracle的换行符
牛客网数据库SQL实战剖析(11-20)
Oracle运算符
sql 处理数据字段为NULL 若不为空则显示该值,若为空转换成别的值。
PHP学习笔记——从搭建PHP开发环境开始
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服