在调用wpf中的fill c#之前,尚未初始化selectcommand属性

时间:2015-09-20 14:30:30

标签: c# wpf

我在wpf中编写了以下代码,但点击按钮时显示错误。

private void button1_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            SqlConnection con = new SqlConnection("data source=RAMANDEEP-PC\\SQLEXPRESS; initial catalog=RamandeepSingh; integrated security=true");
            con.Open();
            SqlCommand cmd = new SqlCommand("select * from ContactManager", con);
            SqlDataAdapter da = new SqlDataAdapter();                
            DataSet ds = new DataSet();
            da.Fill(ds, "ContactManager");
            da.SelectCommand = cmd;
            listBox1.DataContext = ds.Tables[0];
            con.Close();
        }
        catch (Exception we)
        {
            MessageBox.Show(we.Message);
        }
    }

3 个答案:

答案 0 :(得分:1)

错误非常简单。您正在尝试先填充适配器然后调用select命令。这显然是错的。将其更改为

 da.SelectCommand = cmd;
 da.Fill(ds, "ContactManager"); 

答案 1 :(得分:0)

错误消息清楚地说明了代码中的问题。在调用内部使用它的SelectCommand之前,您应该设置Fill

da.SelectCommand = cmd;
da.Fill(ds, "ContactManager"); 

答案 2 :(得分:0)

顺序很重要,试试这个。 :)

DataSet ds = new DataSet();

using(SqlConnection conn = new SqlConnection(""data source=RAMANDEEP-PC\\SQLEXPRESS; initial catalog=RamandeepSingh; integrated security=true"))
{
    SqlDataAdapter da = new SqlDataAdapter();
    SqlCommand cmd = conn.CreateCommand();
    cmd.CommandText = "select * from ContactManager";
    da.SelectCommand = cmd;

    conn.Open();
    da.Fill(ds);
}

listBox1.ItemSource = ds.Tables[0];