好多成员方法,头尾都是一样的,中间不一样,代码如下,如何优化? 谢谢
public DataSet GetDataSet(string cmdtext)
{
try
{
myConn.Open(); DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(cmdtext);
cmd.Connection = myConn;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds;
}
catch (Exception e)
{
throw (e);
}
finally
{
myConn.Close();
}
} public DataTable GetTable(string cmdtext)
{
try
{
myConn.Open(); DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand(cmdtext);
cmd.Connection = myConn;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
return dt;
}
catch (Exception e)
{
throw (e);
}
finally
{
myConn.Close();
}
} public object ExecuteScalar(string sqlstr)
{
try
{
myConn.Open(); SqlCommand cmd = new SqlCommand(sqlstr);
cmd.Connection = myConn;
return cmd.ExecuteScalar();
}
catch (Exception e)
{
throw (e);
}
finally
{
myConn.Close();
}
} public int Execute(string sqlstr)
{
try
{
myConn.Open(); SqlCommand cmd = new SqlCommand(sqlstr);
cmd.Connection = myConn;
return cmd.ExecuteNonQuery();
}
catch (Exception e)
{
throw (e);
}
finally
{
myConn.Close();
}
} public object ExecuteReturnID(string sqlstr)
{
try
{
myConn.Open(); SqlCommand cmd = new SqlCommand(sqlstr);
cmd.Connection = myConn;
cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT @@IDENTITY";
return cmd.ExecuteScalar();
}
catch (Exception e)
{
throw (e);
}
finally
{
myConn.Close();
}
}
public DataSet GetDataSet(string cmdtext)
{
try
{
myConn.Open(); DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(cmdtext);
cmd.Connection = myConn;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds;
}
catch (Exception e)
{
throw (e);
}
finally
{
myConn.Close();
}
} public DataTable GetTable(string cmdtext)
{
try
{
myConn.Open(); DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand(cmdtext);
cmd.Connection = myConn;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
return dt;
}
catch (Exception e)
{
throw (e);
}
finally
{
myConn.Close();
}
} public object ExecuteScalar(string sqlstr)
{
try
{
myConn.Open(); SqlCommand cmd = new SqlCommand(sqlstr);
cmd.Connection = myConn;
return cmd.ExecuteScalar();
}
catch (Exception e)
{
throw (e);
}
finally
{
myConn.Close();
}
} public int Execute(string sqlstr)
{
try
{
myConn.Open(); SqlCommand cmd = new SqlCommand(sqlstr);
cmd.Connection = myConn;
return cmd.ExecuteNonQuery();
}
catch (Exception e)
{
throw (e);
}
finally
{
myConn.Close();
}
} public object ExecuteReturnID(string sqlstr)
{
try
{
myConn.Open(); SqlCommand cmd = new SqlCommand(sqlstr);
cmd.Connection = myConn;
cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT @@IDENTITY";
return cmd.ExecuteScalar();
}
catch (Exception e)
{
throw (e);
}
finally
{
myConn.Close();
}
}
解决方案 »
- IIS下无法结束EXCEL进程
- jquery 让右表格选中单行转移到左表格中,但是出错了 TRID 是用来保存行ID Direct就是左右转移方法
- ASP.NET 调整Frameset中frame的相对大小,让其中页面也相对改变?
- 日期计算
- http开头的字符串如何自动加上连接
- datagrid的“删除”“选择”重新绑定问题
- 关于 Container 的问题
- DataGrid中的按钮列的编辑,点击时是触发什么事件?如何在点击别的按钮时触发这个事件????
- 字符串截取
- 在DataList 的 HeaderTemplate 里面加了一个 Lable ID=“LblMsg” 控件,界面和代码分开,可代码部分说没有定义过LblMsg,这是怎么回事
- 请教高手,这是什么意思
- 发邮件的遇到的问题
SqlCommand cmd = new SqlCommand(cmdtext);
cmd.Connection = myConn;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds;
起码应该把对象的申请 DataSet ds = new DataSet(); 放在 myConn.Open() 前面
你这个东西只能访问一个数据库么?
最起码应该把连接字符串作为参数吧,比如:
public static DataTable Execute(string pConnStr, string pSqlString)封装App对象或者DataBase对象,隔离细节
调用的时候:
DAHelper.Execute(...App.ConnStr,.....)
AccessHelper.cs
OleDbHelper.cs
MySqlHelper.cs
等等
当然楼主并不是这意思,我觉得应该没什么好方法优化吧,可能我能力还没到吧,
因为你这里有DataSet ,DataTable 然后又是ExecuteScalar,ExecuteNonQuery都不同关键也在这里,没什么好办法,还是就这样了。
{
return DoCommand(cmdtext, cmd =>
{
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds;
});
} public DataTable GetTable (string cmdtext)
{
return DoCommand(cmdtext, cmd =>
{
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
return dt;
});
} public object ExecuteScalar (string sqlstr)
{
return DoCommand(sqlstr, cmd => cmd.ExecuteScalar());
} public int Execute(string sqlstr)
{
return DoCommand(sqlstr, cmd => cmd.ExecuteNonQuery());
} public object ExecuteReturnID(string sqlstr)
{
return DoCommand(sqlstr, cmd =>
{
cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT @@IDENTITY";
return cmd.ExecuteScalar();
});
} public T DoCommand<T>(string cmdtext, Func<SqlCommand, T> func)
{
try
{
myConn.Open();
SqlCommand cmd = new SqlCommand(cmdtext);
cmd.Connection = myConn;
return func(cmd);
}
catch (Exception e)
{
throw (e);
}
finally
{
myConn.Close();
} }