zoukankan      html  css  js  c++  java
  • 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();
  • 相关阅读:
    win11系统无法解决的死结
    python多线程2线程应用
    python多线程3线程同步
    python多线程3.1同步测试例子
    python多线程1线程创建
    最近总是淡淡的····
    ASP.NET MVC 中如何实现基于角色的权限控制
    【转】Visual C++ ADO数据库编程入门
    【转】Windows窗体消息汇总
    【转】数据库设计中的14个技巧
  • 原文地址:https://www.cnblogs.com/no7dw/p/1490850.html
Copyright © 2011-2022 走看看