неверный синтаксис рядом с System.Data.DataRowViev - PullRequest
0 голосов
/ 15 мая 2011

У меня есть DatagridView, который связан с управлением списком. Combobox используется для фильтрации данных из таблицы. комбинированный список и данные в 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);
            }


        }

1 Ответ

0 голосов
/ 15 мая 2011

Как уже сказал Хенк - вам нужно больше заботиться о ваших связях, о том, как вы открываете и закрываете их. Кроме того: если вы используете 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 сразу, не нужно открывать и закрывать SqlConnection при использовании SqlDataAdapter и т. Д.) Для второго запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...