无法找到表 0。--- 在 System.Data.DataTableCollection.get_Item(Int32 index)
在 Lan.DAL.DBHelper.GetDataSet(String sql, SqlParameter[] values) 位置 E:\工作项目\公司项目\三公项目\Lan.SanGong\Lan.DAL\DBHelper.cs:行号 154
在 Lan.DAL.UserService.GetUserByUP(String userName, String password) 位置 E:\工作项目\公司项目\三公项目\Lan.SanGong\Lan.DAL\UserService.cs:行号 44
在
在 Lan.DAL.DBHelper.GetDataSet(String sql, SqlParameter[] values) 位置 E:\工作项目\公司项目\三公项目\Lan.SanGong\Lan.DAL\DBHelper.cs:行号 154
在 Lan.DAL.UserService.GetUserByUP(String userName, String password) 位置 E:\工作项目\公司项目\三公项目\Lan.SanGong\Lan.DAL\UserService.cs:行号 44
在
string strSql = "select * from tl_User where F_Name=@name and F_Password=@password";
SqlParameter[] paras ={
new SqlParameter("@name",SqlDbType.VarChar,20),
new SqlParameter("password",SqlDbType.VarChar,20)
};
paras[0].Value = userName;
paras[1].Value = password;
DataTable dtUserInfo = DBHelper.GetDataSet(strSql, paras);
User userInfo = new User();
if (dtUserInfo!=null && dtUserInfo.Rows.Count > 0)
{
DataRow row = dtUserInfo.Rows[0];
userInfo.Key = row["F_Key"].ToString();
userInfo.Name = row["F_Name"].ToString();
userInfo.Role = row["F_Role"].ToString();
userInfo.Area = row["F_Area"].ToString();
}
return userInfo;
DataSet ds=DBHelper.GetDataSet(strSql, paras)???DataSetif(ds!=null && ds.DataTable.Count>0)
DataTable dtUserInfo = DBHelper.GetDataSet(strSql, paras)[0];
{
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}
{
get
{
string connectionString = ConfigurationManager.AppSettings["ConnString"]; if (connection == null)
{
connection = new SqlConnection(connectionString);
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Closed)
{
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
return connection;
}
}
我以为,如果不手动写关闭连接方法,如果连接数据库操作完毕之后会自动将连接放回到连接池中。现在我这样写using(SqlCommand cmd = new SqlCommand(sql, Connection))
{
cmd.Parameters.AddRange(values);
SqlDataReader reader = cmd.ExecuteReader();
return reader;
}
会不会用完之后自动将连接释放掉,放到连接池中
SqlConnection con = new SqlConnection(sqlConStr);
//实例一个操作代理
SqlCommand comm = new SqlCommand();
comm.Connection = con; //定义SQL语句
string query = "Select N_1101 as [记录编号],N_1102 as [分类编码],N_1103 as [分类名称] From [N_1100] ORder by N_1107 DESC";
comm.CommandText = query;
//实例一个数据库操作表
DataTable dt=new DataTable();
try
{
con.Open();
//实例一个数据填充对象,using也是释放资源的一种方式
using (SqlDataAdapter sda = new SqlDataAdapter())
{
sda.SelectCommand = comm; //将数据填充到dt中
sda.Fill(dt);
sda.Dispose();
} }
catch (Exception e)
{
Response.Write("数据绑定失败!<br/>");
Response.Write(e.Message);
}
finally//不管执行成功与否,都要记得关闭数据库链接,释放资源
{
comm.Dispose();
con.Close();
con.Dispose();
}
{
cmd.Parameters.AddRange(values);
SqlDataReader reader = cmd.ExecuteReader();
return reader;
}如果我这样写是否能确保连接using中使用到连接的都会关闭并放到连接池中(无论是否出现异常情况)?
{
Connection.Open();
SqlCommand cmd = new SqlCommand(safeSql, Connection);
int result = cmd.ExecuteNonQuery();
Connection.Close();//这一句是否可以不用加
return result; }