none
变量的使用范围 RRS feed

  • 问题

  • 初学C#,遇到一个问题:

    有两个按钮,在第一个按钮的代码中,包含了如下语句,秀于创建数据库的连接

    private void button1_Click(object sender, EventArgs e)      

    {

    ......      
                OleDbConnection myConn = new OleDbConnection();
                myConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strPath;
                myConn.Open();

    ......

    }

    在第二按钮中,有如下语句,用于数据库的操作

    private void button3_Click(object sender, EventArgs e)

    {

    ......   

                OleDbCommand myCmd = myConn.CreateCommand();
                myCmd.CommandText = strSQL;
                OleDbDataReader myDr = myCmd.ExecuteReader ();
                myDr.Read();

    ......

    }

    现在问题就出来了,如果按以上方式写,编译器会提示myConn不在上下文中,不能使用,同时编译也会出错。如果把两段代码合并到一个按钮中,程序没有问题。

    通过以上,我可以知道是由于myConn,这个变量未能在两个类中共用,应该是变量的使用范围的问题,但不知道如何去解决这个问题。

    2013年11月5日 1:46

答案

  • 你好:

    欢迎来到MSDN中文论坛。

    把你第一个按钮中创建数据库连接的代码拿到方法的外面,这两个方法就可以共用这个数据库连接了:

    OleDbConnection myConn = new OleDbConnection();
    private void button1_Click(object sender, EventArgs e)
    {
    ......      
                 myConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strPath;
                 myConn.Open();
    ......
    }

    更多内容,请参考MSDN在线文档:

    ADO.NET 代码示例


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2013年11月6日 2:02
    版主

全部回复

  • myConn你定义成了局部变量,当然不能在两个区域中使用了,

    你可以定义到一起,用完后关闭就可以

    myConn.Close();

    2013年11月5日 2:19
  • 感谢您的回复! myConn是OleDbConnection的实例,如何才可以写成public。

    学习,学习,再学习

    2013年11月5日 2:31
  • 你好:

    欢迎来到MSDN中文论坛。

    把你第一个按钮中创建数据库连接的代码拿到方法的外面,这两个方法就可以共用这个数据库连接了:

    OleDbConnection myConn = new OleDbConnection();
    private void button1_Click(object sender, EventArgs e)
    {
    ......      
                 myConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strPath;
                 myConn.Open();
    ......
    }

    更多内容,请参考MSDN在线文档:

    ADO.NET 代码示例


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2013年11月6日 2:02
    版主
  • 按照 Caillen Zhong 的回复成功解决了问题。

    再次感谢大家的帮助!


    学习,学习,再学习

    2013年11月6日 9:02