• C#向Sql Server中插入记录时单引号的处理 使用存储过程 .NET教程,C#语言


    文章页数:[1] 
    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、将单引号用两个单引号替换:
    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、使用存储过程来插入

    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();
  • 相关阅读:
    0302思考并回答一些问题
    1231 实验四 递归下降语法分析程序设计
    1118 实验三 有限自动机的构造与识别
    1112对他人的博客评论及建议
    1029c语言文法
    1022词法分析实验总结
    词法分析
    0330 复利计算——单元测试
    0321 读《构建之法》第一,二,三章有感
    0316 复利计算总结(0330 更新)
  • 原文地址:https://www.cnblogs.com/no7dw/p/1490850.html
Copyright © 2020-2023  润新知