C# Fill:SelectCommand。尚未初始化连接属性。怎么办?

C# Fill:SelectCommand。尚未初始化连接属性。怎么办?,c#,C#,当我尝试使用方法GetCities()时,它说: Fill:SelectCommand。尚未初始化连接属性 谁能告诉我该怎么办 public class CitiesService { public DataSet DS; public OleDbConnection myConnection; public OleDbDataAdapter adapter; public OleDbDataAdapter adapter2; public Cities

当我尝试使用方法
GetCities()
时,它说:

Fill:SelectCommand。尚未初始化连接属性

谁能告诉我该怎么办

public class CitiesService
{
    public DataSet DS;
    public OleDbConnection myConnection;
    public OleDbDataAdapter adapter;
    public OleDbDataAdapter adapter2;

    public CitiesService()
    {   
    }

    public DataSet GetCities()
    {
        OleDbCommand myCmd = new OleDbCommand("SPtblCities", myConnection);
        myCmd.CommandType = CommandType.StoredProcedure;
        OleDbDataAdapter Adapter = new OleDbDataAdapter();
        Adapter.SelectCommand = myCmd;
        DataSet dataSet = new DataSet();

        try
        {
            Adapter.Fill(dataSet, "tblCities");
            dataSet.Tables["tblCities"].PrimaryKey = new DataColumn[]
            { 
                dataSet.Tables["tblCities"].Columns["CityID"]
            };
        }
        catch (OleDbException ex)
        {
            throw ex;
        }

        return dataSet;
    }

}

是,连接未初始化,它是
null

替换

public OleDbConnection myConnection;

或在方法中:

myConnection = new OleDbConnection(ConnectionString);
OleDbCommand myCmd = new OleDbCommand("SPtblCities", myConnection);

我建议您使用这种模式,并记住其中一些物品是一次性的

public class CitiesService
{
    public DataSet DS;
    public OleDbConnection myConnection;
    public OleDbDataAdapter adapter;
    public OleDbDataAdapter adapter2;

    public CitiesService()
    {

    }



    public DataSet GetCities()
    {
        using (DataSet dataSet = new DataSet()) 
        {
            using (OleDbConnection myConnection = new OleDbConnection(ConnectionString))
            {           
                myConnection.Open();

                using (OleDbCommand myCmd = myConnection.CreateCommand())
                {
                    myCmd.CommandType = CommandType.StoredProcedure;
                    using (OleDbDataAdapter Adapter = new OleDbDataAdapter())
                    {
                        Adapter.SelectCommand = myCmd;
                        try
                        {

                            Adapter.Fill(dataSet, "tblCities");
                            dataSet.Tables["tblCities"].PrimaryKey = new DataColumn[] { dataSet.Tables["tblCities"].Columns["CityID"] };
                        }
                        catch (OleDbException ex)
                        {
                            throw ex;
                        }
                    }
                }
                myConnection.Close();
            }
            return dataSet;
        }
    }

}

您需要实例化并打开连接。@GlennFerrieLive:使用
DataAdapter
您不需要手动打开/关闭连接<代码>填充简单地完成。
public class CitiesService
{
    public DataSet DS;
    public OleDbConnection myConnection;
    public OleDbDataAdapter adapter;
    public OleDbDataAdapter adapter2;

    public CitiesService()
    {

    }



    public DataSet GetCities()
    {
        using (DataSet dataSet = new DataSet()) 
        {
            using (OleDbConnection myConnection = new OleDbConnection(ConnectionString))
            {           
                myConnection.Open();

                using (OleDbCommand myCmd = myConnection.CreateCommand())
                {
                    myCmd.CommandType = CommandType.StoredProcedure;
                    using (OleDbDataAdapter Adapter = new OleDbDataAdapter())
                    {
                        Adapter.SelectCommand = myCmd;
                        try
                        {

                            Adapter.Fill(dataSet, "tblCities");
                            dataSet.Tables["tblCities"].PrimaryKey = new DataColumn[] { dataSet.Tables["tblCities"].Columns["CityID"] };
                        }
                        catch (OleDbException ex)
                        {
                            throw ex;
                        }
                    }
                }
                myConnection.Close();
            }
            return dataSet;
        }
    }

}