自己做的一道机试题

两个关联的表的增删查改

主要用了参数 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;
        }
    }
}

原文地址:https://www.cnblogs.com/gdjlc/p/2086984.html