10.01学习日记

本文详细介绍了在数据库操作中使用using语句管理资源及事务处理的方法,通过实例展示了如何安全地插入用户信息并利用事务确保数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天学习using 的使用

  它具有释放对象占用的资源

     基本的语法是

using(SqlConnection cnn=new ...)

{

......

}

下面是一段实例:

protected void btnSave_Click(object sender, EventArgs e)
    {
        string str = ConfigurationManager
            .ConnectionStrings["sqlcnnstring"].ConnectionString;
        using (SqlConnection sqlcnn = new SqlConnection(str))
        {
            SqlCommand sqlcmm = new SqlCommand();
            sqlcmm.Connection = sqlcnn;
            sqlcmm.CommandText = "insert into users(uid,name,power)values(@uid,@name,@power)";
            SqlParameter param = new SqlParameter("@uid", System.Data.SqlDbType.VarChar, 6);
            param.Value = this.txtNo.Text;
            sqlcmm.Parameters.Add(param);

            param = new SqlParameter("@name", System.Data.SqlDbType.NVarChar, 8);
            param.Value = txtName.Text;
            sqlcmm.Parameters.Add(param);

            param = new SqlParameter("@power", ddlPower.SelectedValue);
            sqlcmm.Parameters.Add(param);
            sqlcnn.Open();
            sqlcmm.ExecuteNonQuery();
            Response.Write("OK");
        }

通过对用户信息录入练习,让自己对以前学过的与数据库的连接以及“添加,删除,查询,修改”的操作进一步熟练,记忆进一步深刻

在练习中也引入了新的知识 “事务的使用(Transaction)”通过使用事务完成对数据库中用户信息的导入

下面是使用事务(Transaction)的一段代码

protected void btnImport_Click(object sender, EventArgs e)
    {
        string strfile = Server.MapPath("~/") + "abc1.txt";
        this.fileUsers.SaveAs(strfile);

        using (FileStream fs = new FileStream(strfile, FileMode.Open))
        {
            StreamReader sr = new StreamReader(fs);

            string str = ConfigurationManager
                .ConnectionStrings["sqlcnnstring"].ConnectionString;
            using (SqlConnection sqlcnn = new SqlConnection(str))
            {
                SqlCommand sqlcmm = new SqlCommand();
                sqlcmm.Connection = sqlcnn;
                sqlcmm.CommandText = "insert into users(uid,name,power)values(@uid,@name,@power)";
                SqlParameter param1 = new SqlParameter("@uid", System.Data.SqlDbType.VarChar, 6);
                sqlcmm.Parameters.Add(param1);
                SqlParameter param2 = new SqlParameter("@name", System.Data.SqlDbType.NVarChar, 8);
                sqlcmm.Parameters.Add(param2);
                SqlParameter param3 = new SqlParameter("@power", ddlPower.SelectedValue);
                sqlcmm.Parameters.Add(param3);

                string line = sr.ReadLine();
                string[] items = null;
                sqlcnn.Open();
                SqlTransaction trans = sqlcnn.BeginTransaction();//创建事物对象
                sqlcmm.Transaction = trans;  //为命令对象指定事物对象
                try
                {
                    while (line != null)
                    {
                        items = line.Split(';');
                        param1.Value = items[0];
                        param2.Value = items[1];
                        switch (items[2])
                        {
                            case "管理员":
                                param3.Value = 0;
                                break;
                            case "售票员":
                                param3.Value = 1;
                                break;
                            case "检票员":
                                param3.Value = 2;
                                break;
                        }
                        sqlcmm.ExecuteNonQuery();
                        line = sr.ReadLine();
                    }
                    trans.Commit();  //提交事务
                }
                catch
                {
                    trans.Rollback();  //回滚事务
                    Response.Write("Error");
                    return;
                }
                Response.Write("OK");
            }

            sr.Close();
            fs.Close();
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值