Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有像样的ADO.NET辅助工具UTIL?_C#_.net_Ado.net - Fatal编程技术网

C# 有没有像样的ADO.NET辅助工具UTIL?

C# 有没有像样的ADO.NET辅助工具UTIL?,c#,.net,ado.net,C#,.net,Ado.net,我正在寻找一些像样的ADO.NET助手实用程序类,以允许我查询ADO.NET数据源。我不寻找太花哨的东西,但它必须支持事务。外面有什么东西吗 另外,我知道数据访问块可以做到这一点,但我一直在寻找一些与其他组件更独立的东西。像一个简单的库或什么的它取决于你对“没什么特别的”和“简单”的定义,但它能很好地抽象出你不想手工编写的样板ADO.NET代码。比如说, public abstract class PersonAccessor : DataAccessor<Person> {

我正在寻找一些像样的ADO.NET助手实用程序类,以允许我查询ADO.NET数据源。我不寻找太花哨的东西,但它必须支持事务。外面有什么东西吗


另外,我知道数据访问块可以做到这一点,但我一直在寻找一些与其他组件更独立的东西。像一个简单的库或什么的

它取决于你对“没什么特别的”和“简单”的定义,但它能很好地抽象出你不想手工编写的样板ADO.NET代码。比如说,

public abstract class PersonAccessor : DataAccessor<Person>
{
    [SqlQuery("SELECT * FROM Person WHERE PersonID = @id")]
    public abstract Person GetPersonByID(int @id);
}

Person person = DataAccessor.CreateInstance<PersonAccessor>.
    GetPersonByID(2);
添加参数就像在
DbManager
上调用方法一样简单


而且你不应该真的害怕ORMs。

如果它只是一个简单的包装器,为什么不自己包装命令呢

例如:

//
///执行存储过程或查询,返回受影响的行数。
/// 
/// 
/// 
/// 
/// 
/// 
公共静态int ExecuteQuery(字符串commandText、CommandType CommandType、列表sqlParameters、SqlTransaction SqlTransaction)
{
if(sqlTransaction==null)
{
使用(SqlConnection SqlConnection=newsqlconnection(GetConnectionString()))
{
sqlConnection.Open();
使用(SqlCommand SqlCommand=sqlConnection.CreateCommand())
{
sqlCommand.CommandType=CommandType;
sqlCommand.CommandText=CommandText;
if(sqlParameters!=null)
{
foreach(sqlParameters中的SqlParameter SqlParameter)
{
sqlCommand.Parameters.Add(sqlParameter);
}
}
返回sqlCommand.ExecuteOnQuery();
}
}
}
其他的
{
SqlCommand SqlCommand=newsqlcommand(commandText,sqlTransaction.Connection,sqlTransaction);
sqlCommand.CommandType=CommandType;
foreach(sqlParameters中的SqlParameter SqlParameter)
{
sqlCommand.Parameters.Add(sqlParameter);
}
返回sqlCommand.ExecuteOnQuery();
}
}
公共类实用程序
{
私有字符串_connectionstring;
专用SqlConnection-DbConn;
私人住宅;
公共int超时;
公共字符串连接字符串
{
设置{u connectionstring=value;}
}
公用程序(字符串connstr)
{
_connectionstring=connstr;
CmdTimeOut=-1;
DBStatus=false;
}
公用事业()
{
DBStatus=false;
CmdTimeOut=-1;
}
///创建并打开一个新连接
公开作废
{
尝试
{
DbConn=newsqlconnection();
DbConn.ConnectionString=\u ConnectionString;
DbConn.Open();
DBStatus=true;
}
捕获(例外情况除外)
{
掷骰子;
}
}
私有void IsConnOpen()
{
尝试
{
if(DbConn.State==ConnectionState.Closed)
{
Open();
}
}
捕获(例外情况除外)
{
掷骰子;
}
}
公共布尔等参元()
{
返回DBStatus;
}
公众假期结束()
{
if(IsOpen())
{
DbConn.Close();
DbConn.Dispose();
DBStatus=false;
}
}
public Int16 Insert(字符串SqlQuery,参数SqlParameter[]SqlParam)
{
IsConnOpen();
Int16 newProdID=0;
SqlCommand cmd=默认值(SqlCommand);
SqlQuery+=“选择强制转换(SCOPE_IDENTITY()为int);”;
cmd=新的SqlCommand(SqlQuery,DbConn);
如果(CmdTimeOut>=0)
{
cmd.CommandTimeout=CmdTimeOut;
}
foreach(SqlParam中的SqlParameter param)
{
cmd.Parameters.Add(param);
}
newProdID=Convert.ToInt16(cmd.ExecuteScalar());
返回newProdID;
}
公共Int64执行(字符串SqlQuery)
{
IsConnOpen();
Int64 newProdID=0;
SqlCommand cmd=新的SqlCommand(SqlQuery,DbConn);
如果(CmdTimeOut>=0)
{
cmd.CommandTimeout=CmdTimeOut;
}
newProdID=Convert.ToInt64(cmd.ExecuteNonQuery());
返回newProdID;
}
public Int64 Execute(字符串SqlQuery,参数SqlParameter[]SqlParam)
{
IsConnOpen();
SqlCommand cmd=新的SqlCommand(SqlQuery,DbConn);
如果(CmdTimeOut>=0)
{
cmd.CommandTimeout=CmdTimeOut;
}
foreach(SqlParam中的SqlParameter param)
{
cmd.Parameters.Add(param);
}
返回Convert.ToInt64(cmd.ExecuteNonQuery());
}
公共对象SP_Execute(字符串SpName,参数SqlParameter[]SqlParam)
{
IsConnOpen();
SqlCommand cmd=新的SqlCommand(SpName,DbConn);
如果(CmdTimeOut>=0)
{
cmd.CommandTimeout=CmdTimeOut;
}
cmd.CommandType=CommandType.storedProcess;
foreach(SqlParam中的SqlParameter param)
{
cmd.Parameters.Add(param);
}
返回cmd.ExecuteScalar();
}
公共对象SelectColumn(字符串SqlQuery,参数SqlParameter[]SqlParam)
{
IsConnOpen();
SqlCommand cmd=新的SqlCommand(SqlQuery,DbConn);
如果(CmdTimeOut>=0)
{
cmd.CommandTimeout=CmdTimeOut;
}
cmd.CommandType=CommandType.Text;
foreach(SqlParam中的SqlParameter param)
{
cmd.Parameters.Add(param);
}
返回cmd.ExecuteScalar();
}
公共对象SelectColumn(字符串表名、字符串列名、字符串条件
        using (DbManager db = new DbManager())
        {
            DataSet ds = db
                .SetCommand("SELECT * FROM Person")
                .ExecuteDataSet();

            Assert.AreNotEqual(0, ds.Tables[0].Rows.Count);
        }
    /// <summary>
    /// Executes a stored procedure or query, returns the number of rows effected.
    /// </summary>
    /// <param name="commandText"></param>
    /// <param name="commandType"></param>
    /// <param name="sqlParameters"></param>
    /// <param name="sqlTransaction"></param>
    /// <returns></returns>
    public static int ExecuteQuery(string commandText, CommandType commandType, List<SqlParameter> sqlParameters, SqlTransaction sqlTransaction)
    {
        if (sqlTransaction == null)
        {
            using (SqlConnection sqlConnection = new SqlConnection(GetConnectionString()))
            {
                sqlConnection.Open();
                using (SqlCommand sqlCommand = sqlConnection.CreateCommand())
                {
                    sqlCommand.CommandType = commandType;
                    sqlCommand.CommandText = commandText;
                    if (sqlParameters != null)
                    {
                        foreach (SqlParameter sqlParameter in sqlParameters)
                        {
                            sqlCommand.Parameters.Add(sqlParameter);
                        }
                    }
                    return sqlCommand.ExecuteNonQuery();
                }
            }
        }
        else
        {
            SqlCommand sqlCommand = new SqlCommand(commandText, sqlTransaction.Connection, sqlTransaction);
            sqlCommand.CommandType = commandType;
            foreach (SqlParameter sqlParameter in sqlParameters)
            {
                sqlCommand.Parameters.Add(sqlParameter);
            }
            return sqlCommand.ExecuteNonQuery();
        }
    }
public class ADOUtility
{
    private string _connectionstring;
    private SqlConnection DbConn;
    private bool DBStatus;

    public int CmdTimeOut;
    public string ConnectionString
    {
        set { _connectionstring = value; }
    }


    public ADOUtility(string connstr)
    {
        _connectionstring = connstr;
        CmdTimeOut = -1;
        DBStatus = false;
    }

    public ADOUtility()
    {
        DBStatus = false;
        CmdTimeOut = -1;
    }

    /// <summary>Create and opens a new connection </summary>
    public void Open()
    {
        try
        {
            DbConn = new SqlConnection();
            DbConn.ConnectionString = _connectionstring;
            DbConn.Open();
            DBStatus = true;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void IsConnOpen()
    {
        try
        {
            if (DbConn.State == ConnectionState.Closed)
            {
                Open();
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }


    public Boolean IsOpen()
    {
        return DBStatus;
    }


    public void Close()
    {
        if (IsOpen())
        {
            DbConn.Close();
            DbConn.Dispose();
            DBStatus = false;
        }
    }


    public Int16 Insert(string SqlQuery, params SqlParameter[] SqlParam)
    {
        IsConnOpen();
        Int16 newProdID = 0;
        SqlCommand cmd = default(SqlCommand);

        SqlQuery += ";SELECT CAST(SCOPE_IDENTITY() AS int);";
        cmd = new SqlCommand(SqlQuery, DbConn);

        if (CmdTimeOut >= 0)
        {
            cmd.CommandTimeout = CmdTimeOut;
        }

        foreach (SqlParameter param in SqlParam)
        {
            cmd.Parameters.Add(param);
        }

        newProdID = Convert.ToInt16(cmd.ExecuteScalar());

        return newProdID;
    }


    public Int64 Execute(string SqlQuery)
    {
        IsConnOpen();
        Int64 newProdID = 0;
        SqlCommand cmd = new SqlCommand(SqlQuery, DbConn);
        if (CmdTimeOut >= 0)
        {
            cmd.CommandTimeout = CmdTimeOut;
        }

        newProdID = Convert.ToInt64(cmd.ExecuteNonQuery());

        return newProdID;
    }


    public Int64 Execute(string SqlQuery, params SqlParameter[] SqlParam)
    {
        IsConnOpen();
        SqlCommand cmd = new SqlCommand(SqlQuery, DbConn);
        if (CmdTimeOut >= 0)
        {
            cmd.CommandTimeout = CmdTimeOut;
        }

        foreach (SqlParameter param in SqlParam)
        {
            cmd.Parameters.Add(param);
        }

        return Convert.ToInt64(cmd.ExecuteNonQuery());
    }


    public object SP_Execute(string SpName, params SqlParameter[] SqlParam)
    {
        IsConnOpen();
        SqlCommand cmd = new SqlCommand(SpName, DbConn);
        if (CmdTimeOut >= 0)
        {
            cmd.CommandTimeout = CmdTimeOut;
        }
        cmd.CommandType = CommandType.StoredProcedure;

        foreach (SqlParameter param in SqlParam)
        {
            cmd.Parameters.Add(param);
        }

        return cmd.ExecuteScalar();
    }


    public object SelectColumn(string SqlQuery, params SqlParameter[] SqlParam)
    {
        IsConnOpen();
        SqlCommand cmd = new SqlCommand(SqlQuery, DbConn);
        if (CmdTimeOut >= 0)
        {
            cmd.CommandTimeout = CmdTimeOut;
        }
        cmd.CommandType = CommandType.Text;

        foreach (SqlParameter param in SqlParam)
        {
            cmd.Parameters.Add(param);
        }

        return cmd.ExecuteScalar();
    }


    public object SelectColumn(string tablename, string columnname, string condition)
    {
        IsConnOpen();
        if (!string.IsNullOrEmpty(condition))
        {
            condition = "where " + condition;
        }

        string query = null;
        query = "select " + columnname + " from " + tablename + " " + condition;
        SqlCommand cmd = new SqlCommand(query, DbConn);
        if (CmdTimeOut >= 0)
        {
            cmd.CommandTimeout = CmdTimeOut;
        }
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        DataSet dbtable = new DataSet();

        adapter.Fill(dbtable, tablename);

        if (dbtable.Tables[tablename].Rows.Count > 0)
        {
            return dbtable.Tables[tablename].Rows[0][0];
        }
        else
        {
            return "no_record_found";
        }
    }


    public DataTable Select_Table(string SqlQuery)
    {
        IsConnOpen();
        SqlCommand cmd = new SqlCommand(SqlQuery, DbConn);
        if (CmdTimeOut >= 0)
        {
            cmd.CommandTimeout = CmdTimeOut;
        }

        SqlDataAdapter adapter = new SqlDataAdapter(cmd);

        DataSet dbtable = new DataSet();
        adapter.Fill(dbtable, "recordset");

        return dbtable.Tables["recordset"];

    }


    public DataTable Select_Table(string SqlQuery, params SqlParameter[] SqlParam)
    {
        IsConnOpen();
        SqlCommand cmd = new SqlCommand(SqlQuery, DbConn);
        if (CmdTimeOut >= 0)
        {
            cmd.CommandTimeout = CmdTimeOut;
        }
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);

        foreach (SqlParameter param in SqlParam)
        {
            cmd.Parameters.Add(param);
        }

        DataSet dbtable = new DataSet();
        adapter.Fill(dbtable, "recordset");

        return dbtable.Tables["recordset"];

    }

    public int Select_Row(string SqlQuery, ref DataRow RowData, params SqlParameter[] SqlParam)
    {
        IsConnOpen();
        SqlCommand cmd = new SqlCommand(SqlQuery, DbConn);
        if (CmdTimeOut >= 0)
        {
            cmd.CommandTimeout = CmdTimeOut;
        }
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);

        foreach (SqlParameter param in SqlParam)
        {
            cmd.Parameters.Add(param);
        }

        DataSet dbtable = new DataSet();
        adapter.Fill(dbtable, "recordset");

        if (dbtable.Tables["recordset"].Rows.Count > 0)
        {
            RowData = dbtable.Tables["recordset"].Rows[0];

            return dbtable.Tables["recordset"].Rows.Count;
        }
        else
        {
            RowData = null;
            return 0;
        }
    }



    public DataTable SP_Execute_Table(string SpName, params SqlParameter[] SqlParam)
    {
        IsConnOpen();
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = SpName;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Connection = DbConn;
        if (CmdTimeOut >= 0)
        {
            cmd.CommandTimeout = CmdTimeOut;
        }

        foreach (SqlParameter param in SqlParam)
        {
            cmd.Parameters.Add(param);
        }

        SqlDataAdapter adapter = new SqlDataAdapter(cmd);

        DataSet dbtable = new DataSet();
        adapter.Fill(dbtable, "recordset");

        return dbtable.Tables["recordset"];
    }
}