c#大神来,帮我调试一下代码

将连接数据库的方法写在了类里面,
form中调用类中连接数据库的方法,可是有错误,改来改去总是有各种错误,
求大神帮忙看看。

public class OpenDataSource
{

   public void openDataSource()//连接数据库的方法
   {
       // 数据库连接字符串   
       string connString =
                 "  Data Source=.\\SQLEXPRESS ;Initial Catalog=_1009firstpackage;User ID = sa; pwd = 123";
       // 创建 Connection 对象 
       SqlConnection connection = new SqlConnection(connString);
       connection.Open();  //打开数据库连接
   }


}
    这是连接数据库的类的代码

这是form1中的代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
OpenDataSource open = new OpenDataSource();
SqlConnection connection;
private void button2_Click(object sender, EventArgs e)
{
open.openDataSource();//调用连接数据库的方法

try
{

            this.richTextBox1.Text += "打开数据库连接成功!\n";
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally 
        {
            connection.Close();  //关闭数据库连接
        }
    }

看下报什么错误。你的链接字符串中有多余的空格,需要去掉。另外你的sql实例名是不是SQLEXPRESS,数据库名是否正确,是否是混合验证,sa密码是否是123,这些都要看你的数据库的设置。

假设你的连接串没有问题的前提下,1.你这里的 OpenDataSource类只是保存一个String 字符串没有别的功能,可以删掉,把String字符串放到Form的窗体中去。
如果确实这样一个类来封装操作数据库,可以百度一下别人封装好的SqlHelper类。
2.Form中的类的SqlConnection 对象connection 一直是null,没有值。

3.按照你的代码,我简单改了一下,你试下可以用不? 如有错,再联系。。。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace BlogText
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//OpenDataSource open = new OpenDataSource();
static string connString = " Data Source=.\SQLEXPRESS ;InitialCatalog=_1009firstpackage;User ID = sa; pwd = 123";
private void button1_Click(object sender, EventArgs e)
{
SqlConnection connection = new SqlConnection(connString);
connection.Open(); //打开数据库连接
//open.openDataSource();//调用连接数据库的方法

        try
        {

            this.richTextBox1.Text += "打开数据库连接成功!\n";
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            connection.Close();  //关闭数据库连接
        }
    }
}

}

不好意思,刚刚少说了一点,需要把OpenDataSource的类给删掉。
连接我自己的数据库是没有问题的。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace BlogText
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//OpenDataSource open = new OpenDataSource();
//static string connString = " Data Source=.\SQLEXPRESS ;InitialCatalog=_1009firstpackage;User ID = sa; pwd = 123";
string connString = " Data Source =.;Initial Catalog = QunInfo9;User Id = sa;Password = 123456";
private void button1_Click(object sender, EventArgs e)
{

        //open.openDataSource();//调用连接数据库的方法
        SqlConnection connection = new SqlConnection(connString);


        try
        {
            connection.Open();  //打开数据库连接
            this.richTextBox1.Text += "打开数据库连接成功!\n";
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            connection.Close();  //关闭数据库连接
        }
    }
}

}
图片说明

图片说明

我那个去,图传错了。。。。。

这是一个错误。。。
你在form1里有个connection对象
在OpenDataSource类的openDataSource方法也有个connection对象
但是:虽然这两个对象名字一样,但是它们一点关系也没。
也就是说一旦openDataSource方法执行完了,里面的局部变量,也就是connection就丢失了。。。
解决方法是把connection设为OpenDataSource类的一个成员,然后把这个成员传给form1里的connection

public class OpenDataSource
{
        public connection;//<---这里要把connetion作为类的成员,这样form才能用
        public void openDataSource()//连接数据库的方法
        {
       // 数据库连接字符串   
       string connString =
                 "  Data Source=.\\SQLEXPRESS ;Initial Catalog=_1009firstpackage;User ID = sa; pwd = 123";
       // 创建 Connection 对象 
       connection = new SqlConnection(connString);
       connection.Open();  //打开数据库连接
        }
}

form1:

private void button2_Click(object sender, EventArgs e)
{
    SqlConnection connection;
    OpenDataSource open = new OpenDataSource();
    open.openDataSource();//调用连接数据库的方法
    connection=open.connection;
    ......
}