Sql server 通用数据访问功能

Sql server 通用数据访问功能,sql-server,function,oledb,data-access,Sql Server,Function,Oledb,Data Access,编写以下通用数据访问函数ADO.NET、C或VB、SQLServer或OLEDB的最佳方法是什么 在连接上执行SQL 打开数据读取器 打开一个数据集关于这个有什么想法吗? 这样我就可以在程序中的任何地方调用这些函数。我对数据访问模式或数据访问层不感兴趣,除非它们直接应用于这些函数。i、 e.自动关闭连接或读卡器/数据集的模式 使用示例 ExecuteSQL("UPDATE tblTest SET x = 5 WHERE [ID] = 4") Using rdr As OleDb.OleDbDa

编写以下通用数据访问函数ADO.NET、C或VB、SQLServer或OLEDB的最佳方法是什么

在连接上执行SQL 打开数据读取器 打开一个数据集关于这个有什么想法吗? 这样我就可以在程序中的任何地方调用这些函数。我对数据访问模式或数据访问层不感兴趣,除非它们直接应用于这些函数。i、 e.自动关闭连接或读卡器/数据集的模式

使用示例

ExecuteSQL("UPDATE tblTest SET x = 5 WHERE [ID] = 4") Using rdr As OleDb.OleDbDataReader = OpenReader("SELECT * FROM tblExecute") While rdr.Read() End While End Using 示例函数

Public Function ExecuteSQL(ByVal strSQL As String) As Boolean Using cn As New OleDb.OleDbConnection(strConn) cn.Open() Using cmd As New OleDb.OleDbCommand(strSQL, cn) Return cmd.ExecuteNonQuery() > 0 End Using End Using Return False End Function Public Function OpenReader(ByVal strSQL As String) As OleDb.OleDbDataReader Dim cn As New OleDb.OleDbConnection(strConn) cn.Open() If cn.State = ConnectionState.Open Then Dim cmd As New OleDb.OleDbCommand(strSQL, cn) Return cmd.ExecuteReader(CommandBehavior.CloseConnection) Else Throw New Exception("Unable to connect to database.") End If End Function 下面是我的方法,给定一个通用列表和一个lambda,用从IDataReader读取的对象填充列表:

public static void Fill<T>(this IDbCommand cmd,
    IList<T> list, Func<IDataReader, T> rowConverter)
{
    using (var rdr = cmd.ExecuteReader())
    {
        while (rdr.Read())
        {
            list.Add(rowConverter(rdr));
        }
    }
}
您可以这样使用它:

// var cmd = new SqlCommand(...);
// var things = new List<Thing>();
cmd.Fill(things, r => new Thing { ID = r.GetInt32(0), Name = r.GetString(1) });

非常方便,可以将ExecuteReader和Read循环打包成这样的一行。

如果这就是您想要的,那么您发布的代码基本上就足够了。至于什么是最好的。。。嗯,我建议使用其中一种数据访问模式。但这确实有效,没什么可说的了。如果愿意,可以为ExecuteScalar等添加其他函数

您基本上只是使用字符串,如果您连接或构建SQL,那么这是非常糟糕的。如果要这样做,就应该真正使用参数化查询,并扩展函数以使用参数集合等