问题在于我使用SqlConnection
作为公共静态连接,认为这可能是导致错误形成时间的问题:
*连接未打开或连接已打开
在静态类中使用SqlConnection
的一个语句是否可以?
所以我只能宣告一次,我知道我可以在connectionString
中使用web.config
ConfigurationManager.ConnectionStrings["conn"].ConnectionString ...
但我希望它与web.config
设置或服务器名称无关。
因为它确实是同一类中的两个方法,也是该主类中的另一个类 但这不是重要的,而是为所有人使用相同的连接 执行!所以你说,即使我用我的帮助者类的正确代码编辑 这是错的?
public static class myDBhelper
{
public static SqlConnection Conn = new SqlConnection ("server=(local);Initial Catalog=dbName;Integrated Security=True");
public static int ExecSQLint(string TblintSQL)
{
int anIntValue=0;
SqlCommand TblintCMD = new SqlCommand(TblintSQL, Conn);
try
{
Conn.Open();
anIntValue = Convert.ToInt32(TblintCMD.ExecuteScalar());
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception("No Can Do: " + ex.Message);
}
finally
{
Conn.Close();
}
return anIntValue;
}
public static string ExecSQLstring(string TblStrSQL)
{
string strValue="";
SqlCommand TblStrCMD = new SqlCommand(TblStrSQL, Conn);
try
{
Conn.Open();
strValue = TblStrCMD.ExecuteScalar().ToString();
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception("No Can Do: " + ex.Message);
}
finally
{
Conn.Close();
}
return strValue;
}
}
我怀疑的主要问题是这两个选项:
SqlConnection Conn = new SqlConnection("Data Source=(local);Integrated Security=True;database=dbName")
在我的DBhelper
课程中,我正在使用此声明
SqlConnection Conn = new SqlConnection("server=(local);Initial Catalog=dbName;Integrated Security=True");
可能不稳定或容易出错吗?
p.s。:我正在通过try catch
执行命令 try
{
Conn.Open();
cmd.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception("No Can Do: " + ex.Message);
}
finally
{
Conn.Close();
}
Using
声明更合适吗?虽然这不是我的问题,但我在想...如果我已经尝试按照这本书的那样做了......
这些方法实际上是错误吗?
答案 0 :(得分:0)
using(var conn=new. SqlConnection( "server=(local);Initial Catalog=dbName;Integrated Security=True"))
{
conn.Open();
}
答案 1 :(得分:-1)
public SqlConnection GetSqlConnection()
{
SqlConnection sql = new SqlConnection();
sql.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["SchoolContext"].ToString();
return sql;
}