C# 单例模式代码实现
我写了下面的代码来连接我的数据库。你们能给我推荐一个比这个更好的选择吗?因为我非常感兴趣的是这台机器的性能如何更好。下面的代码是否实现了单例模式C# 单例模式代码实现,c#,asp.net-mvc-4,singleton,C#,Asp.net Mvc 4,Singleton,我写了下面的代码来连接我的数据库。你们能给我推荐一个比这个更好的选择吗?因为我非常感兴趣的是这台机器的性能如何更好。下面的代码是否实现了单例模式 public static class DbConnect { public static DataTable SqlConnection(string query) { DataTable dt = null; using (SqlConnection
public static class DbConnect
{
public static DataTable SqlConnection(string query)
{
DataTable dt = null;
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
if (cn.State == ConnectionState.Closed)
{
dt = new DataTable();
cn.Open();
da.Fill(dt);
}
}
return dt;
}
}
}
}
像这样的事情,我希望:
// I've used KeyValuePair for parameters; probably a specialized class will be better
public static DataTable SqlConnection(string query, params KeyValuePair<String, Object>[] parameters) {
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ConnectionString)) {
using (SqlCommand cmd = cn.CreateCommand()) {
cmd.CommandText = query;
// Parameters, if they're mentioned
if (!Object.ReferenceEquals(null, parameters))
foreach (var prm in parameters)
cmd.Parameters.AddWithValue(prm.Key, prm.Value);
using (SqlDataAdapter da = new SqlDataAdapter(cmd)) {
cn.Open();
DataTable result = new DataTable();
da.Fill(result);
return result;
}
}
}
}
//我已经使用KeyValuePair作为参数;也许专业课会更好
公共静态数据表SqlConnection(字符串查询,参数KeyValuePair[]参数){
使用(SqlConnection cn=newsqlconnection(ConfigurationManager.ConnectionStrings[“ConString”].ConnectionString)){
使用(SqlCommand cmd=cn.CreateCommand()){
cmd.CommandText=查询;
//参数,如果提到的话
如果(!Object.ReferenceEquals(null,参数))
foreach(参数中的var prm)
cmd.Parameters.AddWithValue(prm.Key,prm.Value);
使用(SqlDataAdapter da=newsqldataadapter(cmd)){
cn.Open();
DataTable结果=新DataTable();
da.填写(结果);
返回结果;
}
}
}
}
DataTable dt1=SqlConnection(“选择123”);
数据表dt2=SqlConnection(
@“选择*
从MyTable
其中MyField=@MyParam“,
新的KeyValuePair(“@MyParam”,123));
另外,代码不是一个单例实现,它甚至不是一个类:只是一个静态方法。删除“if(cn.State==ConnectionState.Closed)”:最好得到一个连接中断的异常,而不是隐藏问题并返回一个空的datatable您不分配“query”ro SqlCommand.CommandTextAdd命令参数支持是的,这是个错误,我正要编辑它。还有其他问题吗?这个问题似乎离题了,因为它是关于代码审查的
DataTable dt1 = SqlConnection("select 123");
DataTable dt2 = SqlConnection(
@"select *
from MyTable
where MyField = @MyParam",
new KeyValuePair<String, Object>("@MyParam", 123));