问题是我将我的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");
那会不稳定或容易出错吗?
ps:我正在通过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
陈述更合适吗?虽然这不是我的问题,但我在想……如果我已经在尝试“按部就班”去做……
其中有什么方法实际上是错误的吗?