自己做的一道机试题

两个关联的表的增删查改
主要用了参数 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

    using System;  
    using System.Collections;  
    using System.Text;  
    using System.Data;  
    using System.Data.SqlClient;  
    using System.Configuration;  
    /// <summary>  
    /// 用于数据访问的类  
    /// </summary>  
    public class DataBase:IDisposable  
    {  
        protected SqlConnection Connection;  
        protected String ConnectionString;  
        public DataBase()  
        {  
            ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;  
        }  
        ~DataBase()  
        {  
            try  
            {  
                if (Connection != null)  
                    Connection.Close();  
            }  
            catch { }  
            try  
            {  
                Dispose();  
            }  
            catch { }  
        }  
        
        protected void Open()  
        {  
            if (Connection == null)  
            {  
                Connection = new SqlConnection(ConnectionString);  
            }  
            if (Connection.State.Equals(ConnectionState.Closed))  
            {  
                Connection.Open();  
            }  
        }  
        
        public void Close()  
        {  
            if (Connection != null)  
                Connection.Close();  
        }  
         
        public void Dispose()  
        {         
            if (Connection != null)  
            {  
                Connection.Dispose();  
                Connection = null;  
            }  
        }  
        public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, object Value)  
        {  
            SqlParameter Param;  
            if (Size > 0)  
                Param = new SqlParameter(ParamName, DbType, Size);  
            else Param = new SqlParameter(ParamName, DbType);  
            if (Value != null)  
                Param.Value = Value;  
            return Param;  
        }  
        
        public DataSet GetDataSet(String SqlString, SqlParameter[] param)  
        {  
            Open();  
            SqlCommand cmd = new SqlCommand(SqlString, Connection);  
            if (param != null)  
            {  
                cmd.Parameters.AddRange(param);  
            }  
            SqlDataAdapter adapter = new SqlDataAdapter();  
            adapter.SelectCommand = cmd;  
            DataSet dataset = new DataSet();  
            adapter.Fill(dataset);  
            Close();  
            return dataset;  
        }  
        public DataTable GetDataTable(String SqlString, SqlParameter[] param)  
        {  
            DataSet dataset = GetDataSet(SqlString, param);  
            dataset.CaseSensitive = false;  
            return dataset.Tables[0];  
        }  
        public int ExecuteSQL(string SqlString, SqlParameter[] param)  
        {  
            Open();  
            try  
            {  
                SqlCommand cmd = new SqlCommand(SqlString, Connection);  
                if (param != null)  
                {  
                    cmd.Parameters.AddRange(param);  
                }  
                return cmd.ExecuteNonQuery();  
            }  
            catch (Exception e)  
            {  
                throw e;  
            }  
            finally  
            {  
                Close();  
            }  
        }  
         
        public int ExecuteSQL(String[] SqlStrings, SqlParameter[][] param)  
        {  
            int count = -1;  
            Open();  
            SqlCommand cmd = new SqlCommand();  
            SqlTransaction trans = Connection.BeginTransaction();  
            cmd.Connection = Connection;  
            cmd.Transaction = trans;  
            try  
            {  
                int i = 0;  
                foreach (String str in SqlStrings)  
                {  
                    cmd.CommandText = str;  
                    cmd.Parameters.AddRange(param[i]);  
                    count = cmd.ExecuteNonQuery();  
                    cmd.Parameters.Clear();  
                    i++;  
                }  
                trans.Commit();  
            }  
            catch  
            {  
                trans.Rollback();  
                count = -1;  
            }  
            finally  
            {  
                Close();  
            }  
            return count;  
        }  
        public SqlDataReader ExecuteReader(String SqlString, SqlParameter[] param)   
        {  
            Open();  
            try  
            {  
                SqlCommand cmd = new SqlCommand(SqlString, Connection);  
                if (param != null)  
                {  
                    cmd.Parameters.AddRange(param);  
                }  
                SqlDataReader myReader = cmd.ExecuteReader();  
                return myReader;  
            }  
            catch (Exception e)  
            {  
                throw e;  
            }  
        }  
        public int ExecuteScalar(string SqlString, SqlParameter[] param)   
        {  
            Open();  
            try  
            {  
                SqlCommand cmd = new SqlCommand(SqlString, Connection);  
                if (param != null)  
                {  
                    cmd.Parameters.AddRange(param);  
                }  
                object o = cmd.ExecuteScalar();  
                return int.Parse(o.ToString());  
            }  
            catch (Exception e)  
            {  
                throw e;  
            }  
        }  
    }  

Default3.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>  
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head runat="server">  
        <title>Untitled Page</title>  
        <mce:script type="text/javascript" language="javascript"><!--  
          
        function DoCheck()  
        {              
            var inputs = document.getElementById("mytable").getElementsByTagName("input");  
            for (var i=0; i < inputs.length; i++)  
            if (inputs[i].type == 'checkbox')  
            {             
                inputs[i].checked = document.getElementById("chkall").checked;            
            }  
        }  
          
    // --></mce:script>  
        <mce:style type="text/css"><!--  
          #mytable { padding: 0; margin: 0; border-collapse:collapse;}  
          td { border: 1px solid #C1DAD7; background: #fff; font-size:12px; padding: 6px 6px 6px 12px; color: #4f6b72;}  
          td.alt { background: #F5FAFA; color: #797268;}  
          
    --></mce:style><style type="text/css" mce_bogus="1">      #mytable { padding: 0; margin: 0; border-collapse:collapse;}  
          td { border: 1px solid #C1DAD7; background: #fff; font-size:12px; padding: 6px 6px 6px 12px; color: #4f6b72;}  
          td.alt { background: #F5FAFA; color: #797268;}  
        </style>  
    </head>  
    <body>  
        <form id="form1" runat="server">  
            姓名:<asp:TextBox ID="txtName" runat="server"></asp:TextBox>  
             <asp:HiddenField runat="server" ID="hfIDEdit" />  
            <br />  
            电话:<asp:TextBox ID="txtPhone" runat="server"></asp:TextBox><br />  
            地址:<asp:TextBox ID="txtAddress" runat="server"></asp:TextBox><br />  
            <asp:Button ID="btnAdd" runat="server" Text="添加" OnClick="btnAdd_Click" />  
            <asp:Label ID="lblMsg" runat="server" Text=""></asp:Label><br />  
            ==================================================================<br />  
            输入姓名:<asp:TextBox ID="txtSearchName" runat="server"></asp:TextBox>  
            <asp:Button ID="btnSearch" runat="server" Text="搜索" OnClick="btnSearch_Click" />         
            <asp:Repeater runat="server" ID="rptUsers" OnItemCommand="rptUsers_ItemCommand" >  
                <HeaderTemplate>  
                    <table width="500" id="mytable" cellspacing="0">  
                        <tr>  
                            <td class="alt"></td>  
                            <td class="alt"> ID</td>  
                            <td class="alt">姓名</td>  
                            <td class="alt"> 电话</td>  
                            <td class="alt">地址</td>  
                            <td class="alt"></td>  
                        </tr>  
                </HeaderTemplate>  
                <ItemTemplate>  
                    <tr>  
                    <td> <asp:CheckBox ID="chkDel" runat="server" /> </td>  
                        <td>  
                            <%#Eval("ID") %>  
                            <asp:HiddenField runat="server" ID="hfID" Value='<%#Eval("ID") %>' />  
                            <asp:HiddenField runat="server" ID="hfName" Value='<%#Eval("Name") %>' />  
                            <asp:HiddenField runat="server" ID="hfPhone" Value='<%#Eval("Phone") %>' />  
                            <asp:HiddenField runat="server" ID="hfAddress" Value='<%#Eval("Address") %>' />  
                        </td>  
                        <td>  
                            <%#Eval("Name") %>  
                        </td>  
                        <td>  
                            <%#Eval("Phone") %>  
                        </td>  
                        <td>  
                            <%#Eval("Address") %>  
                        </td>  
                        <td>  
                          <asp:LinkButton ID="BtnEdit" CommandName="btnEdit" runat="server">编辑</asp:LinkButton>  
                        </td>  
                    </tr>  
                </ItemTemplate>  
                <FooterTemplate>  
                    </table>                                 
                 </FooterTemplate>  
            </asp:Repeater>  
            <input type="checkbox" id="chkall" name="chkall" value="on" οnclick="DoCheck();">全选  
                   <asp:Button runat="server" ID="btnDel" Text="删除" OnClick="btnDel_Click" />    
              
        </form>  
    </body>  
    </html>  
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;
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值