2013-03-09 7 views
0

Я получаю ошибку при создании объекта datarow.ошибка при попытке вставить новую строку в таблицу набора данных

Ссылка на объект не указывает на экземпляр объекта

protected void Button2_Click(object sender, EventArgs e) 
    { 
     SqlConnection con2 = new SqlConnection("Data Source=AMIT-PC\\SQLEXPRESS;Initial Catalog=Amit;Integrated Security=true"); 
     con2.Open(); 
     SqlCommand cmd2 = new SqlCommand("Select * from hotel.country", con2); 

     SqlDataAdapter da2 = new SqlDataAdapter(cmd2); 
     SqlCommandBuilder sb = new SqlCommandBuilder(da2); 
     DataSet ds2 = new DataSet(); 
     da2.Fill(ds2); 
     /* GridView2.DataSource = ds2; 
     GridView2.DataBind();*/ 

     DataRow dr = ds2.Tables["hotel.country"].NewRow(); 
     dr[ds2.Tables[TextBox1.Text].Columns[0].ColumnName] = TextBox2.Text; 
     dr[ds2.Tables[TextBox1.Text].Columns[1].ColumnName] = TextBox3.Text; 
     da2.Update(ds2); 
     GridView1.DataBind(); 

    } 
+0

я не знаю, почему парень, который только что заметил удалил свой пост, потому что он решил моя проблема ... то есть я не могу использовать имя таблицы в ds2.Tables [""] вместо этого я должен использовать номер. –

+0

Удалено, потому что в нем была некоторая информация о хранимых процедурах, и вы используете команду select. Теперь я изменил свой ответ. – JodyT

+0

И если у вас будет более 5 таблиц, вы будете помнить все цифры? Попробуйте 'DataRow dr = ds2.Tables [" country "]. NewRow()' Также было бы намного проще, если бы вы создали свой собственный набор данных, такой как DsHotel со столом Country и так далее. Тогда это будет 'DsHotel.CountryRow dr = DsHotel.Country.NewRow(); dr.YourColumnName = .... ' –

ответ

0

Вы можете создать отображение типа:

da2.TableMappings.Add("Table", "Hotel.Country"); 

и доступа к нему со стороны:

ds2.Tables[0].NewRow(); 

EDIT:

Это может быть даже проще, если вы хотите использовать имя таблицы.

da2.Fill(ds2, "Hotel.Country"); 
+0

спасибо другу за помощь –

0

Попробуйте это ...

DataRow dr = ds2.Tables[0].NewRow(); 
    dr[ds2.Tables[TextBox1.Text].Columns[0].ColumnName] = TextBox2.Text; 
    dr[ds2.Tables[TextBox1.Text].Columns[1].ColumnName] = TextBox3.Text; 
    da2.Update(ds2); 

Может быть, это может помочь вам ....

+0

Спасибо, sagar проблема решена –

Смежные вопросы