У меня есть таблица в базе данных, в которой имена авторов хранятся вместе с их цитатами из Google. несколько авторов разделяются запятой. Я разделил их и показать их на вид сетки данных, используя этот код:Нулевое значение, возвращаемое с datagridview
foreach (DataRow row in dataTable.Rows)
{
int GSCitations;
{
string paper = Convert.ToString(row[1]);
Int32.TryParse(Convert.ToString(row[2]), out GSCitations);
string str = Convert.ToString(row[0]);
string[] result = str.Split(new Char[] { ',' });
foreach (string author in result)
{
dataGridView1.Rows.Add(id, author, paper, GSCitations);
id++;
}
}
тогда я забрать их из поля зрения сетки данных и пытались хранить их в базе данных, используя этот код:
foreach (DataGridViewRow row in dataGridView1.Rows)
{
try
{
mysqlStatement = "INSERT INTO test1(ID, Authors,Paper, GSCitations) VALUES('" + row.Cells[0].Value + "','" + row.Cells[1].Value + "','" + row.Cells[2].Value + "','" + row.Cells[3].Value +"');";
mySqlCommand = new MySqlCommand(mysqlStatement, mySqlConnection);
mySqlCommand.ExecuteNonQuery();
}
catch(Exception excep)
{
MessageBox.Show(excep.ToString());
}
}
Но исключает исключение, этот идентификатор равен null. поскольку id является первичным ключом, он не может b null. в представлении сетки данных ни один идентификатор не является нулевым, но при его хранении он возвращает нулевой идентификатор сразу после разделения одной группы авторов. Я имею в виду, что первая статья написана четырьмя авторами. он возвращает null сразу после 4 строк, а затем после каждой группы. пожалуйста, помогите
Пара вещей в вашем коде * (но не связанные) *, первое использование [параметризованных запросов] (HTTP: //www.dotnetperls.com/sqlparameter) вместо конкатенации запросов. Во-вторых, как вы можете снова вставить в базу данных с тем же самым первичным ключом? вы пытаетесь обновить? – Habib
Что такое значение в ID? это нуль? Является ли таблица базы данных пустой? –
Я обрезаю таблицу каждый раз, когда я запускаю код, я делаю это только для проверки цели – mani