Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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
asp.net C#连接类_C#_Asp.net_Class - Fatal编程技术网

asp.net C#连接类

asp.net C#连接类,c#,asp.net,class,C#,Asp.net,Class,大家好,我正在尝试创建一个连接类,它可以通过调用对象在整个项目中使用 如何添加命令参数以及如何为datareader创建方法? 这是我的代码: /// <summary> /// Summary description for AccessDb /// </summary> public class AccessDb { OleDbConnection con = new OleDbConnection(); public DataTable dataTa

大家好,我正在尝试创建一个连接类,它可以通过调用对象在整个项目中使用

如何添加命令参数以及如何为datareader创建方法? 这是我的代码:

/// <summary>
/// Summary description for AccessDb
/// </summary>
public class AccessDb
{
    OleDbConnection con = new OleDbConnection();
    public DataTable dataTable = new DataTable();

    public AccessDb()
    {
        con.ConnectionString = ConfigurationManager.ConnectionStrings["connection"].ConnectionString;
    }

    public DataTable execDataTable(string command)
    {
        try
        {
            con.Open();
            OleDbCommand cmd = new OleDbCommand(command, con);
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            da.Fill(dataTable);
            da.Dispose();
        }
        catch (Exception ex)
        {
            HttpContext.Current.Response.Write("<script>alert('something wrong with the connection '"+ ex.Message +")</script>");
        }
        finally 
        {
            con.Close();
        }
        return dataTable;
    }

}

您应该让您的
ExecDataTable
使用
OleDbCommand

public DataTable ExecDataTable(OleDbCommand cmd)
{
    try
    {
        con.Open();
        if(cmd.Connection == null)
           cmd.Connection = con;

        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
        da.Fill(dataTable);
        da.Dispose();
    }
    catch
    {
        throw;
    }
    finally 
    {
        con.Close();
    }

    return dataTable;
}
那么您将如何调用此方法

OleDbCommand cmd = new OleDbCommand("SELECT * FROM AGESNews WHERE ID=@ID");
cmd.Parameters.AddWithValue("@ID", yourParameterIDValue);

DataTable dt = dbcon.execDataTable(cmd);

那么,问题出在哪里?代码不起作用或无法编译或是什么?@Lucero他想为他的DAL提供CommandParameters,但他不能这样做,因为他只提供字符串查询。请查看如何处理连接和重用连接(特别是为什么不提供)。您还需要遵守单一责任原则,您的db包装器不应该写入响应流。它应该要么重新包装在自己的异常中的异常,要么根本不捕获异常。还有很多ORM已经在做这类事情,从非常可配置的NHibernate或实体框架到更简单的Massive和Subsonic。嗨,我的出生名!您的代码正在运行,非常感谢:)我有一个忙,您可以为datareader创建一个方法吗?@codenijuan欢迎您将答案标记为正确。我有一个小忙,您可以为datareader创建一个方法吗?@codenijuan如果您有问题,请先自己尝试,然后再问新问题。查看他提到的Igor的评论,不要共享一个连接,这是一种糟糕的做法。这里的政策是每个帖子一个问题。好的,我会先试着用我自己的代码来写。。谢谢您的时间:)
OleDbCommand cmd = new OleDbCommand("SELECT * FROM AGESNews WHERE ID=@ID");
cmd.Parameters.AddWithValue("@ID", yourParameterIDValue);

DataTable dt = dbcon.execDataTable(cmd);