2.通过SqlParameter参数添加
通过SqlParameter参数向数据库添加数据,主要使用SqlParameter类的一些属性和方法。
首先要创建SqlConnection类的一个对象,用来连接数据库,然后插入一个带参数的SQL命令。
例如,使用的带参数的SQL命令实现向数据库的图书信息表(“tb_BookInfo”表)中添加相关的图书信息,代码如下。
insert into tb_BookInfo (BookName,BookIntroduce,BookPrice,BookIsNew) values(@BookName,@BookIntroduce,@BookPrice,@BookIsNew) |
说明:在使用带参数的SQL命令(如insert、update和delete等命令)时,其中的参数必须要用标识符@来标记,而参数名称可自己定义。在这种情况下,参数与命令关联的顺序就不重要了。
注意:OLEDB和ODBC数据源使用以问号(?)占位符标识的定位参数。参数的顺序是重要的。这一点与SQL Server是不同的,要牢记!
本例通过在页面指定的文本框中输入要添加的相关信息,通过在【添加】按钮的Click事件中使用SqlParameter参数来实现添加操作,添加的信息将显示在GridView控件中。
程序开发步骤:
(1)新建一个网站,将其命名为Ex19_02,默认主页为Default.aspx。
(2)向Default.aspx页中添加一个Table表格,用于布局页面,然后在Table表格中分别添加一个GridView控件、4个TextBox控件和一个Button控件,用来显示添加的结果、输入添加信息和执行添加命令。
(3)主要程序代码。
“添加信息”按钮Click事件代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=(local);Database=fangdawei;Uid=sa;Pwd=;");
con.Open();
string str = "select count(*) from tb_BookInfo where BookName='" + TextBox1.Text.ToString() + "'";
SqlCommand com = new SqlCommand(str, con);
int intcont = Convert.ToInt32(com.ExecuteScalar());
if (intcont > 0)//判断数据库中是否有相同的录
{
Response.Write("alert('对不起!不允许填写相同记录!')");
}
else
{
try
{
//插入命令
string sqlstr = "insert into tb_BookInfo (BookName,BookIntroduce,BookPrice,BookIsNew) values(@BookName,@BookIntroduce,@BookPrice,@BookIsNew)";
SqlCommand mycom = new SqlCommand(sqlstr, con);
//添加参数
mycom.Parameters.Add(new SqlParameter("@BookName", SqlDbType.VarChar,50));
mycom.Parameters.Add(new SqlParameter("@BookIntroduce", SqlDbType.VarChar,50));
mycom.Parameters.Add(new SqlParameter("@BookPrice", SqlDbType.Money,8));
mycom.Parameters.Add(new SqlParameter("@BookIsNew", SqlDbType.Char,10));
//给参数赋值
mycom.Parameters["@BookName"].Value = TextBox1.Text;
mycom.Parameters["@BookIntroduce"].Value = TextBox2.Text;
mycom.Parameters["@BookPrice"].Value = Convert.ToDecimal(TextBox3.Text);
mycom.Parameters["@BookIsNew"].Value = DropDownList1.SelectedValue.ToString();
//执行添加语句
mycom.ExecuteNonQuery();
con.Close();
BindData();
Response.Write("alert('添加成功!')");
}
catch(Exception ex)
{
Response.Write(ex.Messgae.ToString());
}
}
}
{
SqlConnection con = new SqlConnection("Data Source=(local);Database=fangdawei;Uid=sa;Pwd=;");
con.Open();
string str = "select count(*) from tb_BookInfo where BookName='" + TextBox1.Text.ToString() + "'";
SqlCommand com = new SqlCommand(str, con);
int intcont = Convert.ToInt32(com.ExecuteScalar());
if (intcont > 0)//判断数据库中是否有相同的录
{
Response.Write("alert('对不起!不允许填写相同记录!')");
}
else
{
try
{
//插入命令
string sqlstr = "insert into tb_BookInfo (BookName,BookIntroduce,BookPrice,BookIsNew) values(@BookName,@BookIntroduce,@BookPrice,@BookIsNew)";
SqlCommand mycom = new SqlCommand(sqlstr, con);
//添加参数
mycom.Parameters.Add(new SqlParameter("@BookName", SqlDbType.VarChar,50));
mycom.Parameters.Add(new SqlParameter("@BookIntroduce", SqlDbType.VarChar,50));
mycom.Parameters.Add(new SqlParameter("@BookPrice", SqlDbType.Money,8));
mycom.Parameters.Add(new SqlParameter("@BookIsNew", SqlDbType.Char,10));
//给参数赋值
mycom.Parameters["@BookName"].Value = TextBox1.Text;
mycom.Parameters["@BookIntroduce"].Value = TextBox2.Text;
mycom.Parameters["@BookPrice"].Value = Convert.ToDecimal(TextBox3.Text);
mycom.Parameters["@BookIsNew"].Value = DropDownList1.SelectedValue.ToString();
//执行添加语句
mycom.ExecuteNonQuery();
con.Close();
BindData();
Response.Write("alert('添加成功!')");
}
catch(Exception ex)
{
Response.Write(ex.Messgae.ToString());
}
}
}