两个关联的表的增删查改
主要用了参数 SqlParameter,事务执行多条sql
表Users
ID int
Name varchar
表UsersDetail
ID int
UserId int (对应表Users的ID)
Phone varchar
Address varchar
----------------------------------------------------------------------------------------------
Web.Config
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=local;Initial Catalog=Test;User ID=sa;Password="
providerName="System.Data.SqlClient" />
</connectionStrings>
----------------------------------------------------------------------------------------------
AppCode/DataBase.cs
----------------------------------------------------------------------------------------------
Default3.aspx
----------------------------------------------------------------------------------------------
Default3.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class Default3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
btnDel.Attributes.Add("onclick", "return confirm('确定进行删除操作吗?');");
BindGV();
}
}
void BindGV()
{
DataBase db = new DataBase();
DataSet ds = db.GetDataSet("select * from Users a inner join UsersDetail b on a.ID=b.UserId", null);
rptUsers.DataSource = ds;
rptUsers.DataBind();
}
protected void btnAdd_Click(object sender, EventArgs e)
{
DataBase db = new DataBase();
if (btnAdd.Text == "添加")
{
SqlParameter[] Params = new SqlParameter[1];
Params[0] = db.MakeParam("@Name", SqlDbType.VarChar, 20, txtName.Text);
string sql = "insert into Users(Name) values(@Name);select @@identity;";
int UserId = db.ExecuteScalar(sql, Params);
SqlParameter[] Params2 = new SqlParameter[3];
Params2[0] = db.MakeParam("@UserId", SqlDbType.Int, 4, UserId);
Params2[1] = db.MakeParam("@Phone", SqlDbType.VarChar, 20, txtPhone.Text);
Params2[2] = db.MakeParam("@Address", SqlDbType.VarChar, 50, txtAddress.Text);
string sql2 = "insert into UsersDetail(UserId,Phone,Address) values(@UserId,@Phone,@Address)";
if (db.ExecuteSQL(sql2, Params2) > 0)
{
lblMsg.Text = "信息添加成功!";
BindGV();
}
else
{
lblMsg.Text = "信息添加失败!";
}
}
else
{
SqlParameter[][] Params = new SqlParameter[2][];
SqlParameter[] Params1 = new SqlParameter[2];
Params1[0] = db.MakeParam("@ID", SqlDbType.Int, 4, int.Parse(hfIDEdit.Value));
Params1[1] = db.MakeParam("@Name", SqlDbType.VarChar, 20, txtName.Text);
SqlParameter[] Params2 = new SqlParameter[3];
Params2[0] = db.MakeParam("@UserId", SqlDbType.Int, 4, int.Parse(hfIDEdit.Value));
Params2[1] = db.MakeParam("@Phone", SqlDbType.VarChar, 20, txtPhone.Text);
Params2[2] = db.MakeParam("@Address", SqlDbType.VarChar, 50, txtAddress.Text);
Params[0] = Params1;
Params[1] = Params2;
string sql1 = "update Users set Name=@Name where ID=@ID";
string sql2 = "update UsersDetail set Phone=@Phone,Address=@Address where UserId=@UserId";
string[] sql = { sql1, sql2 };
if (db.ExecuteSQL(sql, Params) > 0)
{
lblMsg.Text = "信息修改成功!";
txtName.Text = txtPhone.Text = txtAddress.Text = "";
btnAdd.Text = "添加";
BindGV();
}
else
{
lblMsg.Text = "信息修改失败!";
}
}
}
protected void btnSearch_Click(object sender, EventArgs e)
{
DataBase db = new DataBase();
SqlParameter[] Params = new SqlParameter[1];
Params[0] = db.MakeParam("@Name", SqlDbType.VarChar, 20, txtSearchName.Text);
string sql = "select * from Users a inner join UsersDetail b on a.ID=b.UserId where a.Name=@Name";
DataSet ds = db.GetDataSet(sql, Params);
rptUsers.DataSource = ds;
rptUsers.DataBind();
}
protected void btnDel_Click(object sender, EventArgs e)
{
DataBase db = new DataBase();
int num = 0;
for (int i = 0; i < rptUsers.Items.Count; i++)
{
HiddenField hfID = (HiddenField)rptUsers.Items[i].FindControl("hfID");
CheckBox chkDel = (CheckBox)rptUsers.Items[i].FindControl("chkDel");
if (chkDel.Checked)
{
num++;
SqlParameter[][] Params = new SqlParameter[2][];
SqlParameter[] Params1 = new SqlParameter[1];
Params1[0] = db.MakeParam("@ID", SqlDbType.Int, 4, int.Parse(hfID.Value));
SqlParameter[] Params2 = new SqlParameter[1];
Params2[0] = db.MakeParam("@UserId", SqlDbType.Int, 4, int.Parse(hfID.Value));
Params[0] = Params1;
Params[1] = Params2;
string sql1 = "delete from Users where ID=@ID";
string sql2 = "delete from UsersDetail where UserId=@UserId";
string[] sql = { sql1, sql2 };
db.ExecuteSQL(sql, Params);
}
}
if (num > 0)
{
BindGV();
this.ClientScript.RegisterClientScriptBlock(this.GetType(), "script", "alert('成功删除了!" + num + "条数据');", true);
}
else
{
this.ClientScript.RegisterClientScriptBlock(this.GetType(), "script", "alert('没有选择数据!');", true);
}
}
protected void rptUsers_ItemCommand(object source, RepeaterCommandEventArgs e)
{
HiddenField hfID = (HiddenField)e.Item.FindControl("hfID");
HiddenField hfName = (HiddenField)e.Item.FindControl("hfName");
HiddenField hfPhone = (HiddenField)e.Item.FindControl("hfPhone");
HiddenField hfAddress = (HiddenField)e.Item.FindControl("hfAddress");
switch (e.CommandName)
{
case "btnEdit":
btnAdd.Text = "编辑";
hfIDEdit.Value = hfID.Value;
txtName.Text = hfName.Value;
txtPhone.Text = hfPhone.Value;
txtAddress.Text = hfAddress.Value;
break;
}
}
}