3
.通过存储过程添加
存储过程可以过滤SQL语句中的非法字符,而且在创建时可直接在服务器上进行编译,所以执行起来比单个SQL语句快。通过存储过程添加数据,可以提高程序的执行效率,而且便于以后的维护。
利用存储过程向数据库添加记录时,首先要创建SqlConnection类的一个对象,用来连接数据库,然后使用SqlCommand对象的CommandType属性指定要执行的SQL文本命令为存储过程,并通过Add方法向SqlParameter中添加参数,最后使用SqlCommand对象的ExecuteNonQuery方法执行数据更新操作。
本例主要应用存储过程实现向图书信息数据库中添加数据,在页面指定的文本框中输入相关的添加信息,通过【添加】按钮的Click事件中调用存储过程来实现添加操作。
使用存储过程添加数据之前,首先需要创建存储过程probookinfo,代码如下:
CREATE PROCEDURE probookinfo (@BookName [VarChar](50), @BookIntroduce [VarChar](50), @BookPrice [Money], @BookIsNew [VarChar](50)) AS INSERT INTO [fangdawei].[dbo].[tb_BookInfo] ( [BookName], [BookIntroduce], [BookPrice], [BookIsNew]) VALUES ( @BookName, @BookIntroduce, @BookPrice, @BookIsNew) GO |
程序开发步骤:
(1)新建一个网站,将其命名为Ex19_03,默认主页为Default.aspx。
(2)向Default.aspx页中添加一个Table表格,用于布局页面,然后在Table表格中分别添加一个GridView控件、4个TextBox控件和一个Button控件,用来显示添加的结果、输入添加信息和执行添加命令。
(3)主要程序代码。
“添加信息”按钮Click事件代码如下:
protected void Button1_Click(object sender, EventArgs e) { SqlConnection myconn = new SqlConnection("server=(local);Database=fangdawei;Uid=sa;Pwd="); //打开链接 myconn.Open(); string str = "select count(*) from tb_BookInfo where BookName='" + TextBox1.Text.ToString() + "'"; //创建SqlCommand对象 SqlCommand com = new SqlCommand(str,myconn); int intcont = Convert.ToInt32(com.ExecuteScalar()); if (intcont > 0) { Response.Write("alert('对不起!不允许填写相同记录!')"); } else { try { SqlCommand mycom = new SqlCommand("probookinfo", myconn); //调用存储过程 mycom.CommandType = CommandType.StoredProcedure; //添加参数 SqlParameter[] prams ={
new SqlParameter("@BookName", SqlDbType.VarChar, 50), new SqlParameter("@BookIntroduce", SqlDbType.VarChar, 50), new SqlParameter("@BookPrice", SqlDbType.Money, 8), new SqlParameter("@BookIsNew", SqlDbType.Char, 10), }; //给参数赋值 prams[0].Value = TextBox1.Text; prams[1].Value = TextBox2.Text; prams[2].Value = Convert.ToDecimal(TextBox3.Text); prams[3].Value = DropDownList1.SelectedValue.ToString(); foreach (SqlParameter parameter in prams) { mycom.Parameters.Add(parameter); } //执行sql语句 mycom.ExecuteNonQuery(); myconn.Close(); BindData(); Response.Write("alert('添加成功!')"); } catch(Exception ex) { Response.Write(ex.Message.ToString()); } } } |