我自己做asp.net有一两个月了,但是不知道自己这样做对不对??
我把所有的对数据库的操作写在一个类里,方法都用静态的
比如:
//输入SELECT语句,获得返回数据集
public static DataTable SelectFormForum(string sql,int start,int size,string tablename)
{
try
{
SqlConnection sqlConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Forum"]);
SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql, sqlConnection);
DataSet returns = new DataSet();
sqlAdapter1.Fill(returns,start,size,tablename);
return returns.Tables[0];
}
catch (Exception ex)
{
throw (ex);
}
}
然后在调用的时候类名.SelectFormForum()这样做好不好,需要关闭吗??????
我把所有的对数据库的操作写在一个类里,方法都用静态的
比如:
//输入SELECT语句,获得返回数据集
public static DataTable SelectFormForum(string sql,int start,int size,string tablename)
{
try
{
SqlConnection sqlConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Forum"]);
SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql, sqlConnection);
DataSet returns = new DataSet();
sqlAdapter1.Fill(returns,start,size,tablename);
return returns.Tables[0];
}
catch (Exception ex)
{
throw (ex);
}
}
然后在调用的时候类名.SelectFormForum()这样做好不好,需要关闭吗??????
public static DataTable SelectFormForum(string sql,int start,int size,string tablename)
{
try
{
SqlConnection sqlConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Forum"]);
SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql, sqlConnection);
DataSet returns = new DataSet();
sqlAdapter1.Fill(returns,start,size,tablename);
sqlConnection.Close();
return returns.Tables[0];
}
catch (Exception ex)
{
throw (ex);
}
}
用静态还是实例方法哪个好没有定论,你觉得够用就好了
{
try
{
SqlConnection sqlConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Forum"]);
SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql, sqlConnection);
DataSet returns = new DataSet();
sqlAdapter1.Fill(returns,start,size,tablename);sqlConnection.Close();return returns.Tables[0];
}
catch (Exception ex)
{
throw (ex);
}
}另,很佩服楼主的这种做法,不过我一般是用存储过程,在程序里没有用过一句SQL语句
对数据连接最好采用异常处理,将连接操作放在try{}catch{}里面分页在显示时实现!!如Datagrid分页显示。
为了防止注入试攻击。怕了现在!!
呵呵
{
Response.Write("<script>alert('出错了!!')</script>");
}报错:
E:\site\moban\DbClass.cs(43): 找不到类型或命名空间名称“Response”(是否缺少 using 指令或程序集引用?)
{
SqlConnection sqlConnection=new SqlConnection();
try
{
sqlConnection.ConnectionString = Convert.Tostring(System.Configuration.ConfigurationSettings.AppSettings["Forum"]);
SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql, sqlConnection);
DataSet returns = new DataSet();
sqlAdapter1.Fill(returns,start,size,tablename);
return returns.Tables[0];
}
catch (Exception ex)
{
throw (ex);
}
fianlly
{
sqlConnection.Close();
}
}
{
SqlConnection sqlConnection=new SqlConnection();
try
{
sqlConnection.ConnectionString = Convert.Tostring(System.Configuration.ConfigurationSettings.AppSettings["Forum"]);
SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql, sqlConnection);
DataSet returns = new DataSet();
sqlAdapter1.Fill(returns,start,size,tablename);
return returns.Tables[0];
}
catch (Exception ex)
{
throw (ex);
}
fianlly
{
sqlConnection.Close();
}
}
{
sqlConnection.Close();
}
这样的话不管会不会报异常都能关闭连接,不然的话,如果报异常了连接就没有地方管了
比如
string start = "10";//数据开始行号
string size = "10";//数据结束行号
string end= Convert.Tostring( Convert.ToInt32(start ) + Convert.ToInt32(size) );//计算数据结束行号
string sql = "select * from (select top "+ size + " * from (select top "+ end + " * from Authors order by au_id desc) temp1 order by au_id asc) temp2 ";
//au_id 为Authors 的主键这样的话,那个方法就可以不用tablename这个参数了,
sqlAdapter1.Fill(returns,start,size,tablename);
就可以直接写成sqlAdapter1.Fill(returns);这样的性能还好。