asp.net C#连接类
大家好,我正在尝试创建一个连接类,它可以通过调用对象在整个项目中使用 如何添加命令参数以及如何为datareader创建方法? 这是我的代码: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
/// <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);