データベースにテーブルがあり、著者名がGoogleの引用とともに保存されています。複数の著者はコンマで区切ります。これらを分割し、次のコードを使用してデータ グリッド ビューに表示します。
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());
}
}
しかし、例外がスローされ、そのIDはnullです。id は主キーであるため、null にすることはできません。データ グリッド ビューでは ID は null ではありませんが、保存すると、1 つの著者グループが分割された直後に null ID が返されます。つまり、最初の論文が 4 人の著者によって書かれた場合です。4行の直後にnullを返し、その後すべてのグループの後に同様に返します。助けてください