DB类
using System;
using System.Collections.Generic;
using System.Web;
using System.Data.SqlClient;
using System.Data;
/// <summary>
///DB 的摘要说明
/// </summary>
public class DB
{
public SqlConnection con = new SqlConnection();
public SqlCommand cmd;
public DataSet ds = new DataSet();
public SqlDataAdapter sda;
public string GetConnectionstring()
{
string constr = System.Configuration.ConfigurationManager.AppSettings.Get(0).ToString();
return constr;
}
public DataSet GetDataTableBySql(string sqlstr)
{
ds.Clear();
con.ConnectionString = GetConnectionstring();
sda = new SqlDataAdapter(sqlstr,con);
sda.Fill(ds);
return ds;
}
public Boolean UpdateDataBySql(string sqlstr)
{
con.ConnectionString = GetConnectionstring();
cmd = new SqlCommand(sqlstr,con);
try
{
con.Open();
cmd.ExecuteNonQuery();
con.Close();
return true;
}
catch (SqlException)
{
con.Close();
return false;
}
}
}
请问这个DB有没有写错,如果没有的话给我讲解一些思路,谢谢!
try
{
con.Open();
cmd.ExecuteNonQuery();
con.Close();
return true;
}
catch (SqlException)
{
con.Close();
return false;
}
就直接返回True了。。。。意思是指要不是异常就是True 呗?
[解决办法]
public DataSet GetDataTableBySql(string sqlstr)
{
ds.Clear();
con.ConnectionString = GetConnectionstring();
sda = new SqlDataAdapter(sqlstr,con);
sda.Fill(ds);
return ds;
}
这个函数里的ds每次最好new一个新的
[解决办法]
在这个DB类中,存在3个方法:GetConnectionstring(),GetDataTableBySql,UpdateDataBySql。GetConnectionstring()就是在配置中获取连接字符串,GetDataTableBySql就是通过sql查询语句来获取所需要的查询结果并返回,UpdateDataBySql就是根据sql语句来更新数据库表的信息。
在GetDataTableBySql中,先将DataSet 类型的实例ds先清空,然后再调用GetConnectionstring方法获取连接字符串,然后通过适配器来将查询结果保存,并用适配器中的Fill方法将结果放在ds中并返回。
在UpdateDataBySql中,也是先尝试打开连接,执行ExecuteNonQuery方法,这样就可以将sql语句执行到数据库中,然后关闭连接。
[解决办法]
public SqlCommand cmd;
public DataSet ds = new DataSet();
public SqlDataAdapter sda;
/*定义在外面,每次用完后都无法及时回收,建议里面用到就在里面定义。*/
public Boolean UpdateDataBySql(string sqlstr)
{
con.ConnectionString = GetConnectionstring();
cmd = new SqlCommand(sqlstr,con);
try
{
con.Open();
cmd.ExecuteNonQuery();
con.Close();
return true;
}
catch (SqlException)
{
con.Close();
return false;
}
/*不要在catch里面写con.close();在finally里面写;*/
[解决办法]
catch是捕获异常的,你把异常屏蔽了。
[解决办法]
、、、、、、、楼主可以去看看别人封装的 DBHelper 学习。
[解决办法]
能请教下哪里被屏蔽了么。。。呵呵。
[解决办法]