System.Data.DataRowViev 附近的语法不正确

本文关键字:语法 不正确 Data DataRowViev System | 更新日期: 2023-09-27 17:56:32

我有与组合框控件连接的 DatagridView。 组合框用于筛选表中的数据。 组合框和数据网格视图中的数据来自同一个表。 我寻找错误,但找不到。 它说:System.Data.DataRowViev 附近的语法不正确

我单击确定按钮,然后单击其他错误:连接未关闭。连接的当前状态为打开。请帮忙

        private void VraboteniPoOpstini_Load(object sender, EventArgs e)
       {
            try
            {
                con.Open();
                ad = new System.Data.SqlClient.SqlDataAdapter("Select * from tbl_PersonalniPodatoci ", con);
                ds = new DataSet();

                ad.Fill(ds, "tbl_PersonalniPodatoci");
                dt = ds.Tables["tbl_PersonalniPodatoci"];
                con.Close();
                //fill combobox
                cbOpstini.DataSource = dt;
                cbOpstini.DisplayMember = "Opstina";
                cbOpstini.ValueMember = "Sifra";
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "ГРЕШКА", MessageBoxButtons.OK);
            }   
        }

        private void cbOpstini_SelectedIndexChanged(object sender, EventArgs e)
        {
            string izberiOpstina = cbOpstini.SelectedValue.ToString();
            string sSql;
            try
            {
                con.Open();
                //datagridview
                sSql = "Select  Sifra, Prezime, Ime, Opstina From tbl_PersonalniPodatoci Where Opstina'" + izberiOpstina + "' Order by Sifra";
                ad = new System.Data.SqlClient.SqlDataAdapter(sSql, con);
                SqlCommandBuilder cb = new SqlCommandBuilder(ad);
                DataTable dt = new DataTable();
                ad.Fill(dt);
                con.Close();
                // fill datagridview
                grdOpstini.DataSource= dt;

            }
            catch (Exception ex )
            {
                MessageBox.Show(ex.Message, "ГРЕШКА", MessageBoxButtons.OK);
            }

        }

System.Data.DataRowViev 附近的语法不正确

正如Henk已经说过的那样 - 您需要更加注意您的连接,如何打开和关闭它们。另外:如果您使用 SqlDataAdapter ,您真的没有必要手动打开连接并再次关闭它 - 数据适配器会自动为您执行此操作。

而且:在第一个例子中,你只需要一个数据表,但你创建了一个数据集,然后从中提取表——这是完全不必要的开销。

尝试这样的事情:

private void VraboteniPoOpstini_Load(object sender, EventArgs e)
{
   try
   {
       // add a "using System.Data.SqlClient" to your file, to make this simpler
       ad = new SqlDataAdapter("Select * from tbl_PersonalniPodatoci ", con);
       DataTable dt = new DataTable();
       ad.Fill(dt);
       //fill combobox
       cbOpstini.DataSource = dt;
       cbOpstini.DisplayMember = "Opstina";
       cbOpstini.ValueMember = "Sifra";
   }
   catch (Exception ex)
   {
      MessageBox.Show(ex.Message, "ГРЕШКА", MessageBoxButtons.OK);
   }   
}

您可以对第二个查询执行类似的方法(立即使用DataTable,在使用 SqlDataAdapter 等时无需打开和关闭 SqlConnection)。