到目前为止,我使用了Dataset
作为我的网站使用了很多Dataset
string strSql = "SELECT * FROM Articles";
DataSet ds = new DataSet();
ds = DataProvider.Connect_Select(strSql);
string Title = ds.Tables[0].Rows[0]["Article_Title"].ToString();
string Desc = ds.Tables[0].Rows[0]["Article_Desc"].ToString();
代码Using
阻止
string strSql = "SELECT * FROM Articles";
// Create a DataSet in using statement.
using (DataSet ds = new DataSet())
{
ds = DataProvider.Connect_Select(strSql);
string Title = ds.Tables[0].Rows[0]["Article_Title"].ToString();
string Desc = ds.Tables[0].Rows[0]["Article_Desc"].ToString();
}
使用DataSet
上面的代码我正在使用SQL
声明,否则我使用Stored Procedures
答案 0 :(得分:2)
using仅确保在DataSet上调用Dispose方法,即使发生异常也是如此。不确定它的优化程度,但对于实现IDisposable
接口的对象来说,这是一种更安全的方法和更好的实践。 using语句就像try / finally块。
就像:
DataSet ds;
try
{
ds = new DataSet();
ds = DataProvider.Connect_Select(strSql);
string Title = ds.Tables[0].Rows[0]["Article_Title"].ToString();
string Desc = ds.Tables[0].Rows[0]["Article_Desc"].ToString();
}
finally
{
if(ds != null)
ds.Dispose();
}
答案 1 :(得分:1)
我建议你使用短小精悍。 DataSet效率很低。 从Nuget或dapper.org下载Dapper
创建DTO(数据传输对象)
public class ArticleDto
{
public int ArticleID {get; set;}
public string Title {get; set;}
public string Description {get; set;}
}
然后在数据层中创建一个管理数据库连接的基类
public abstract class SalesDb : IDisposable
{
protected static IDbConnection OpenConnection()
{
IDbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["NAME"].ConnectionString);
connection.Open();
return connection;
}
}
然后,创建从数据库返回数据的服务类
public class ArticleService : SalesDb
{
public IEnumerable<ArticleDto> SelectAll()
{
using (IDbConnection connection = OpenConnection())
{
var articles = connection.Query<ArticleDto>("SELECT * FROM Articles");
return articles;
}
}
}