Получение ошибки «СЛОЖНАЯ ПРИВЯЗКА ДАННЫХ ПРИНИМАЕТ ИСТОЧНИК ДАННЫХ КАК ILIST», когда я пытаюсь заполнить свою таблицу данных в форме Windows с помощью MS ACCESS

#c# #datagrid #ms-access-2010

Вопрос:

Я использую базу данных access. Я сделал соединение и адаптер данных глобальными переменными. При загрузке формы мое поле со списком заполняется всеми идентификаторами учащихся. Я пытаюсь заполнить свою таблицу данных всеми записями студента, чей идентификатор я выбрал в поле со списком. Тем не менее, это дает мне вышеупомянутую ошибку. Я относительно новичок и проверил кое-какую документацию, но не смог ее понять.

 namespace P1
{
    public partial class Form2 : Form
    {
        OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source =d:DDBS.mdb");
        OleDbDataAdapter adap = new OleDbDataAdapter("Select * from Student", @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source =d:DDBS.mdb");   
        DataSet d1 = new DataSet("Student");

        private void Form2_Load(object sender, EventArgs e)
        {

            adap.Fill(d1, "Student");
            con.Open();
            int x = d1.Tables["Student"].Rows.Count - 1;
            for (int i = 0; i < x; i  )
            {
                comboBox1.Items.Add(d1.Tables["Student"].Rows[i]["sid"]);
            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
           
            OleDbCommand ada = new OleDbCommand( "SELECT  * FROM Student where sid= '"   comboBox1.SelectedItem   "'", con);
            ada.ExecuteNonQuery();
            dataGrid1.DataSource = ada;
            MessageBox.Show("DONE");
        }
    }
}
 

Ответ №1:

Вы не можете напрямую использовать адаптер данных в качестве источника данных, но вам необходимо заполнить, т. е. Список/данные, которые можно использовать, а затем назначить его. Самым простым способом здесь было бы:

 OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable students = new DataTable();
da.Fill(students );
dataGrid1.DataSource = students ;
 

Комментарии:

1. О, так что сначала я должен был создать базу данных и заполнить ее адаптером. Спасибо