连接问题

时间:2010-07-28 05:52:03

标签: c# database

如何编写此脚本

if (con.Open == true) ;
{ 
   totalv.ExecuteNonQuery();
}
else
{
   con.Open();
   totalv.ExecuteNonQuery();
}

2 个答案:

答案 0 :(得分:3)

好吧,主要问题是由于if末尾的分号:

if (con.Open == true) ;

这基本上终止了if语句,因为你刚刚得到一个块...这意味着else没有任何内容可以引用。因此,最小的变化是:

if (con.Open == true)
{ totalv.ExecuteNonQuery(); }
else
{
    con.Open();
    totalv.ExecuteNonQuery();
}

然而,这更简单地写为:

if (!con.Open)
{
    con.Open();
}
totalv.ExecuteNotQuery();

下一个问题 - 您尝试将Open用作属性和方法。我怀疑你想要这样的东西:

if (con.State == ConnectionState.Closed)
{
    con.Open();
}
totalv.ExecuteNotQuery();

但是,我同意Pranay的说法,每次需要时打开和关闭连接会更好,并让连接池处理物理网络连接。你为什么要处理一个可能封闭的连接呢?

答案 1 :(得分:1)

更好的方法:使用带有连接对象的using语句

using (SqlConnection cn = new SqlConnection(connectionString))
{
    using (SqlCommand cm = new SqlCommand(commandString, cn))
    {
        cn.Open();
        cm.ExecuteNonQuery();
    }
}