zoukankan      html  css  js  c++  java
  • YBB.DBUtils用法

    通用数据访问类库,兼容ADO、ADO.NET方式访问。

    利用ProviderFactory工厂方法,支持Oracle(不需要安装客户端)、SQL Server、OleDb和ODBC等数据库访问。

    https://github.com/BobinYang/YBB.DBUtils

    用法:

    1、初始化线程缓存AdoNetHelper 类:

    • Oracle:
    using (AdoNetHelper Db = AdoNetHelper.ThreadInstance("data source=:1521/orcl;user id=;password=*;", DbProviderType.Oracle_ManagedODP))) { 。。。。。 }
    • SQL Server:
    using (AdoNetHelper Db = AdoNetHelper.ThreadInstance("data source=;user id=sa;password=;Initial Catalog=*;", DbProviderType.SqlServer))) { 。。。。。 }//Dispose可关闭所有内部连接。

    2、常用的命令:

    • Db.OpenNewConnection()
    • Db.CreateNewCommand(sql, conn)
    • Db.BeginNewTrans(conn)
    • Db.CreateNewCommand(sql, trans);
    • Db.MakeInParam(":a", **)
    • DataSet ds = Db.ExecuteDataset(conn, "GetOrders", 24, 36);

    以及所有DbHelper中的方法。

    3、打开连接和创建命令,执行读数据

    举例:

    string  sql = "select 1 from  **";
            DbConnection conn = null;
            try
            {
                conn  = Db.OpenNewConnection();
                DbCommand command = Db.CreateNewCommand(sql, conn);
                DbDataReader  dr = command.ExecuteReader(); //   Convert.ToInt32(command.ExecuteScalar()); //   DataTable dt1 = Db.ExecuteDataset(command);
                if (rd.HasRows)
                {
                    dr.Close();
                    return true;
                }
                // while (dr.Read())
                //{
                //       List1.Add(dr[0].ToString().Trim());
                //  }
                dr.Close();
            }
            finally
            {
                Db.CloseConnection(conn);
            }

    4、带参数执行命令

    举例:

            sql = "insert into table1 (column1,column2) values (:a,:b)";//sql server为@符号
            DbConnection conn = Db.Conn;
            using (DbCommand command = Db.CreateNewCommand(sql, conn))
             {
                 command.Parameters.Add(Db.MakeInParam(":a", **));
                 command.Parameters.Add(Db.MakeInParam(":b", **));
                 command.ExecuteNonQuery();
             }

    5、利用事务处理更新操作。

            int rows = 0;
            DbConnection   conn  = Db.OpenNewConnection();
            DbTransaction trans = Db.BeginNewTrans(conn);
            DbCommand command = Db.CreateNewCommand(sql, trans);
            try
            {  
                sql = "delete **";
                command.CommandText = sql;
                rows = command.ExecuteNonQuery();
    
                sql = "update  **";
                command.CommandText = sql;
                rows = command.ExecuteNonQuery();
             
                trans.Commit();
            }
            catch (Exception)
            {
                if (trans != null)
                {
                    trans.Rollback();
                }
                throw;
            }
            return rows;

    6、插入操作返回最新值。

            string lastId = "";
            DbTransaction trans = null;
            try
            {
                DbConnection conn = Db.Conn;
                trans = Db.BeginNewTrans(conn);
    
                sql = "insert intotable1 (column1,column2) values (*,*) RETURNING ID into :recid ";
    
                command = Db.CreateNewCommand(sql, trans);
                DbParameter paralastId = Db.MakeOutParam(":recid", DbType.String, 20);
                paralastId.Direction = ParameterDirection.ReturnValue;
                command.Parameters.Add(paralastId);
    
                command.ExecuteNonQuery();
                command.Parameters.Clear();
                lastId = paralastId.Value.ToString();
    
                trans.Commit();
            }
            catch (Exception)
            {
                if (trans != null)
                {
                    trans.Rollback();
                }
                throw;
            }
    //SQL的存储过程

    ALTER PROCEDURE [dbo].[MouldFiles_Exists]
    @ID int
    AS
    DECLARE @TempID int
    SELECT @TempID = count(1) FROM [MouldFiles] WHERE ID=@ID
    IF @TempID = 0
    RETURN 0
    ELSE
    RETURN 1

    
    

    7、处理存储过程的输入输出参数。

            string sql = "sp***";
            DbConnection conn = Db.Conn;
            command = Db.CreateNewCommand(sql, conn);
            command.CommandType = CommandType.StoredProcedure;
    
             //钻取存储过程参数                 
            DbParameter[] spParameterSet = Db.GetSpParameterSet(sql);
    
             //参数加入到command中                 
            foreach (DbParameter parameter in spParameterSet)               
            {               
                command.Parameters.Add(parameter);         
            }                
    
            //为参数赋值            
            command.Parameters[":line"].Value =  Line;          
            command.Parameters[":model"].Value = PartNumber;
    
            command.ExecuteNonQuery();
            //得到输出参数的值(@ID int output,)
            ID = Convert.ToInt32(((OracleDecimal)(command.Parameters[":ID"].Value)).Value);
            command.Parameters.Clear();
            command.CommandType = CommandType.Text;

    8、类图如下:

  • 相关阅读:
    Flask17 Flask_Script插件的使用
    python导入模块被加横线
    MYSQL中replace into的用法
    flask通过nginx代理后base_url拿不到正确的url_scheme2016-04-14 12:31
    nginx+Gunicorn部署你的Flask项目
    浅谈flask源码之请求过程
    浅谈Flask 中的 线程局部变量 request 原理
    flask基础之jijia2模板语言进阶(三)
    Redis在windows下安装过程
    如何打开Intellij IDEA的代码提示功能/联想/自动联想
  • 原文地址:https://www.cnblogs.com/springsnow/p/10076990.html
Copyright © 2011-2022 走看看