zoukankan      html  css  js  c++  java
  • 【ADO.NET】 使用通用数据库操作类Database (SQL Server)

    一、Web.config配置

    <connectionStrings>
        <add name="constr_name" connectionString="server=192.168.1.139;uid=sa;pwd=123456;Trusted_Connection=no;Database=dabasename" providerName="system.data.sqlclient"/>
    </connectionStrings>
    注:constr_name(自定义名),server(sqlserver服务器地址),uid(登录名),pwd(密码),Trusted_Connection(是否使用windows账户登录),Database(数据库名),providerName(数据库类型,sqlserver的为system.data.sqlclient

    二、引用

    using Microsoft.Practices.EnterpriseLibrary.Data;

     三、创建数据库实例

    private Database _database;
    this._database = DatabaseFactory.CreateDatabase();//在DAL类的构造函数中创建

    例1、获取所有id大于10的用户

    User user = null;
    List<User> list = new List<User>();
    //读取数据
    string sql = "SELECT * FROM [User] WHERE id > @id;"; DbCommand command = _database.GetSqlStringCommand(sql);
    _database.AddInParameter(command, "id", DbType.Int32, 10);//添加参数 DataTable dt
    = _database.ExecuteDataSet(command).Tables[0];
    //将数据写入对象
    for (int i = 0; i < dt.Rows.Count; i++) { user = new User(); if (dt.Rows[i]["id"] != DBNull.Value) user.id = Convert.ToInt32(dt.Rows[i]["id"]); if (dt.Rows[i]["name"] != DBNull.Value) user.name = dt.Rows[i]["name"].ToString(); list.Add(user); }

    例2、 使用事务,插入用户数据

    int result = 0;
    string sql = "INSERT INTO [User] VALUES(@Id,@Name);";
    
    using (DbConnection conn = _database.CreateConnection())
    {
        conn.Open();
        DbTransaction tran = conn.BeginTransaction();//开始事务
        try
        {
            command = _database.GetSqlStringCommand(sql);
            _database.AddInParameter(command, "Id", DbType.Int32, 1);
            _database.AddInParameter(command, "Name", DbType.String, 'name1');
            result += _database.ExecuteNonQuery(command, tran);//插入第一条数据
    
            _database.AddInParameter(command, "Id", DbType.Int32, 2);
            _database.AddInParameter(command, "Name", DbType.String, 'name2');
            result += _database.ExecuteNonQuery(command, tran);//插入第二条数据
    
            if (result == 2)
                tran.Commit();//两条数据都插入成功则提交事务
            else
            {
                tran.Rollback();//否则回滚事务,取消所有插入的数据
            }
        }
        catch (System.Exception ex)
        {
            tran.Rollback();//出错,回滚事务
        }
        finally
        {        
            if (conn != null)
               conn.Close();
        }
    }
  • 相关阅读:
    网站设计分析:模块化——高效重构
    linux 优化git操作速度
    cool
    跨域解决方案
    vue 登录验证引擎
    scss学习笔记
    配置动态加载模块和js分模块打包,生产环境和开发环境公共常量配置
    降低版本安装flashPlayer
    python 学习日志
    centos atomic host第一次启动
  • 原文地址:https://www.cnblogs.com/stgp/p/6226640.html
Copyright © 2011-2022 走看看