C# 为连接字符串创建单独的类

C# 为连接字符串创建单独的类,c#,winforms,C#,Winforms,我正在尝试为名为connection.cs的连接创建单独的类,为什么在执行查询时出现此错误 ExecuteOnQuery需要一个打开的可用连接。连接的当前状态为关闭 我做错了什么 在我的Dal.cs课上 public void Insert(string f1,string f2) { string query; Connection c = new Connection();

我正在尝试为名为connection.cs的连接创建单独的类,为什么在执行查询时出现此错误

ExecuteOnQuery需要一个打开的可用连接。连接的当前状态为关闭

我做错了什么

在我的Dal.cs课上

 public void Insert(string f1,string f2)
            {
                string query;
                Connection c = new Connection();
                c.OpenCnn();
                try  {
                    query = "inset into ..."
                    cmd = new SqlCommand(query, con);
                    cmd.ExecuteNonQuery();
                }

               catch (Exception ex){
                   throw ex;
                }

                finally {
                     c.CloseCnn();
                }
            }
在我的连接课上

public class Connection

    {
        SqlCommand cmd = new SqlCommand();
        SqlConnection con = new SqlConnection();

        public void OpenCnn()
        {
       string cnnStr = ConfigurationManager.ConnectionStrings["myconnstrng"].ToString();
            con = new SqlConnection(cnnStr);
            con.Open();
        }

        public void CloseCnn()
        {

            con.Close();
        }
    }

当前con字段是
私有的
,无法从
连接
类外部访问

您可以向连接类添加属性:

public SqlConnection Connection { get { return con; } }
然后通过您的实例访问它:

 Connection c = new Connection();
 c.OpenCnn();
 try 
 {
      query = "inset into ..."
      cmd = new SqlCommand(query, c.Connection);
      cmd.ExecuteNonQuery();
 }
顺便说一句,我不确定您在
Insert
方法中的
con
指的是什么(可能是一个局部变量,而不是
con
字段,否则它甚至无法编译)

方法
插入

注意
SqlCommand
公共属性的初始化和使用
conn

public void Insert(string f1, string f2)
{
    string query;
    Connection c = new Connection();
    c.OpenCnn();
    try  
    {
        query = "insert into ..."
        SqlCommand cmd = new SqlCommand(query, c.Conn);
        cmd.ExecuteNonQuery();
    }
    catch (Exception ex){
               throw ex;
    }
    finally {
       c.CloseCnn();
    }
 }

你试过调试吗?你得到的错误是什么?什么时候?尝试调试插入方法中的
con
来自何处?在
Connection
class.thnx中没有任何内容是公共的。它起作用了我正在定义SqlConnection con=newsqlconnection();在我的insert方法中
public void Insert(string f1, string f2)
{
    string query;
    Connection c = new Connection();
    c.OpenCnn();
    try  
    {
        query = "insert into ..."
        SqlCommand cmd = new SqlCommand(query, c.Conn);
        cmd.ExecuteNonQuery();
    }
    catch (Exception ex){
               throw ex;
    }
    finally {
       c.CloseCnn();
    }
 }