Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.136.26.20] |
|
Сообщ.
#1
,
|
|
|
Друзья, хочу добавить данные с датагрида в базу данных но выдает ошибку ссылка на объект не указывает на экземпляр объекта, что я делаю не правильно?Обращаюсь к записи через класс бд коннектиться тока вот со вставкой косяк((((((((
private void toolStripButton2_Click(object sender, EventArgs e) { // добавление записей в таблицу string lastvo = sqlClass.getIndex("SELECT MAX(Id_company) AS last fROM company"); for (int l = 0; l < dataGridView1.RowCount; l++) { string insert = "insert into company (Id_company, address, nachalo_sotrudnichestva, vozmojnost_adaptacii, korporativ_obuchenie, otzyvy, chernyi_list, BIN_RNN, primechanie, nalichie_dogovorov, opyt_sotrudnichesva, kolich_obuch) " + "values ('" + lastvo + "', '" + dataGridView1.Rows[l].Cells[1].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[2].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[3].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[4].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[5].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[6].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[7].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[8].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[9].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[10].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[11].Value.ToString() + "')"; sqlClass.InsertUpdate(insert); } |
Сообщ.
#2
,
|
|
|
Какой именно текст ошибки, на что конкретно ругается? Id_company имеет Cells[1] а не ноль?
|
Сообщ.
#3
,
|
|
|
Цитата ter_nk_ @ ссылка на объект не указывает на экземпляр объекта |
Сообщ.
#4
,
|
|
|
На какой именно элемент?
|
Сообщ.
#5
,
|
|
|
Цитата Ali002 @ Id_company это нулевая ячейка |
Сообщ.
#6
,
|
|
|
В такой "колбасе" ничего не разберешь...
сделайте реализацию более понятной, например такой: var row = dataGridView1.Rows[l]; var builder = new StringBuilder(); builder.Append("insert into company (Id_company, address, nachalo_sotrudnichestva, vozmojnost_adaptacii, korporativ_obuchenie, otzyvy, chernyi_list, BIN_RNN, primechanie, nalichie_dogovorov, opyt_sotrudnichesva, kolich_obuch) "); builder.Append("values ("); for (int column = 0; column < %columns_max%; ++column) { builder.AppendFormat("'{0}'", row.Cells[column].Value); } builder.Append(")"); sqlClass.InsertUpdate(builder.ToString()); Запускайте под дебагером и смотрите... |
Сообщ.
#7
,
|
|
|
Цитата maxim84_ @ < %columns_max%; ++column вот это место пожалста по подробнее что сюда вписать ? |
Сообщ.
#8
,
|
|
|
эм...
%columns_max% = максимальное значение колонок... |
Сообщ.
#9
,
|
|
|
Цитата maxim84_ @ да я понял что максимальное значение тока его как получить моим запросам? или как просто вот так %columns_max% |
Сообщ.
#10
,
|
|
|
Ну вы этот код писали? или кто? Сколько у вас колонок в таблице? такому числу и равно это значение...
Используйте тогда уж dataGridView1.ColumnCount |
Сообщ.
#11
,
|
|
|
Цитата maxim84_ @ глупый вопрос канечно (( но каким сделать значение l потому что если 0 то ругается что Column count doesn't match value count at row 1 |
Сообщ.
#12
,
|
|
|
for (int l = 0; l < dataGridView1.RowCount; l++) П.С. вообще-то я заменил только кучу "+" строк, и приведенный мной код это только часть, а не весь код. |
Сообщ.
#13
,
|
|
|
Цитата maxim84_ @ пожалуйста напишите с моим кодом до меня чет не доходит там же в цикле вставляются значения из датагрида так что мне еще туда дописывать? |
Сообщ.
#14
,
|
|
|
private void toolStripButton2_Click(object sender, EventArgs e) { // добавление записей в таблицу string lastvo = sqlClass.getIndex("SELECT MAX(Id_company) AS last fROM company"); for (int l = 0; l < dataGridView1.RowCount; l++) { string insert = BuildSqlQueryFromRow(lastvo, dataGridView1.Rows[l] ); sqlClass.InsertUpdate(insert); } } private string BuildSqlQueryFromRow(string companyId, DataGridViewRow row) { var builder = new StringBuilder(); builder.Append("insert into company (Id_company, address, nachalo_sotrudnichestva, vozmojnost_adaptacii, korporativ_obuchenie, otzyvy, chernyi_list, BIN_RNN, primechanie, nalichie_dogovorov, opyt_sotrudnichesva, kolich_obuch) "); builder.Append("values ("); builder.AppandFormat("'{0}'", companyId); foreach (DataGridViewCell cell in row.Cells) { builder.AppendFormat("'{0}'", cell.Value); } builder.Append(")"); return builder.ToString(); } ПС. Код написал прям тут, не исключены ошибки - проверяйте. |
Сообщ.
#15
,
|
|
|
Цитата maxim84_ @ блин вот что выходит "insert into company (Id_company, address, nachalo_sotrudnichestva, vozmojnost_adaptacii, korporativ_obuchenie, otzyvy, chernyi_list, BIN_RNN, primechanie, nalichie_dogovorov, opyt_sotrudnichesva, kolich_obuch) values ('''q''q''12.02.2012 0:00:00''True''True''3''True''454''dvsdv''6''6''')" Добавлено Цитата maxim84_ @ вы пропустили запятую между value я поставил только вот теперь он вставляет после последнего значения запятую как это предусмтреть чтоб после последнего не вставлялась запятая |
Сообщ.
#16
,
|
|
|
M Ali002 учитесь пользоваться тегом Быстрая цитата чтобы нормально выделять текст. Цитата Ali002 @ а как вывод даты поменять чтоб без времени? Дату без времени можно выводить с помощью var dateTime = DateTime.Now.ToString("yyyyMMdd"); Будет выведена дата одной строкой. Такой тип записи доступен для вставки в MS SQL. Проверяйте подойдет к MySQL уже сами. Цитата Ali002 @ вы пропустили запятую между value я поставил только вот теперь он вставляет после последнего значения запятую как это предусмтреть чтоб после последнего не вставлялась запятая как то так. Переписал немного код который вам дал maxim84_ private void toolStripButton2_Click(object sender, EventArgs e) { // добавление записей в таблицу string lastvo = sqlClass.getIndex("SELECT MAX(Id_company) AS last fROM company"); for (int l = 0; l < dataGridView1.RowCount; l++) { string insert = BuildSqlQueryFromRow(lastvo, dataGridView1.Rows[l]); sqlClass.InsertUpdate(insert); } } private string BuildSqlQueryFromRow(string companyId, DataGridViewRow row) { var builder = new StringBuilder(); builder.Append("insert into company (Id_company, address, nachalo_sotrudnichestva, vozmojnost_adaptacii, korporativ_obuchenie, otzyvy, chernyi_list, BIN_RNN, primechanie, nalichie_dogovorov, opyt_sotrudnichesva, kolich_obuch) "); builder.Append("values ("); var data = new List<string>(); data.Add(string.Format("'{0}'", companyId)); foreach (DataGridViewCell cell in row.Cells) { data.Add(string.Format("'{0}'", cell.Value)); } builder.AppendFormat("{0}", string.Join(",", data)); builder.Append(")"); return builder.ToString(); } Если вы знаете количество колонок то можете написать значения как то так. private void toolStripButton2_Click(object sender, EventArgs e) { // добавление записей в таблицу string lastvo = sqlClass.getIndex("SELECT MAX(Id_company) AS last fROM company"); for (int l = 0; l < dataGridView1.RowCount; l++) { string insert = BuildSqlQueryFromRow(lastvo, dataGridView1.Rows[l]); sqlClass.InsertUpdate(insert); } } private string BuildSqlQueryFromRow(string companyId, DataGridViewRow row) { var builder = new StringBuilder(); builder.Append("insert into company (Id_company, address, nachalo_sotrudnichestva, vozmojnost_adaptacii, korporativ_obuchenie, otzyvy, chernyi_list, BIN_RNN, primechanie, nalichie_dogovorov, opyt_sotrudnichesva, kolich_obuch) "); builder.Append("values ("); var data = new List<string>(); data.Add(string.Format("'{0}'", companyId)); data.AddRange(new[] { string.Format("'{0}'", row.Cells[1].Value.ToString()), string.Format("'{0}'", row.Cells[2].Value.ToString("yyyyMMdd")), //предположил что это дата string.Format("'{0}'", row.Cells[3].Value.ToString()), string.Format("'{0}'", row.Cells[4].Value.ToString()), string.Format("'{0}'", row.Cells[5].Value.ToString()), string.Format("'{0}'", row.Cells[6].Value.ToString()), string.Format("'{0}'", row.Cells[7].Value.ToString()), string.Format("'{0}'", row.Cells[8].Value.ToString()), string.Format("'{0}'", row.Cells[9].Value.ToString()), string.Format("'{0}'", row.Cells[10].Value.ToString()), string.Format("'{0}'", row.Cells[11].Value.ToString()) }); builder.AppendFormat("{0}", string.Join(",", data)); builder.Append(")"); return builder.ToString(); } |