我正在尝试填充由2个表组成的本地mdf数据库。第一个表包含" top lvl"数据和第二个表是"引用"到第一个。
问题是:代码没有填写第二个表,我不明白为什么。该表仅显示一行具有NULL值。我很抱歉,如果这是一个双重帖子,但我试图找到答案,我所得到的一切都很困惑。如果您能够提供解决方案,请尽可能详细说明。提前谢谢。
这里我从前一个方法传入一个DataTable(它已经填满了我想在数据库中插入的值。我检查了。)
public void InsertTrackDataToSql(DataTable dtXL)
这里是完整的代码:
public void InsertTrackDataToSql(DataTable dtXL)
{
DataRow[] selectRows = dtXL.Select();
SqlConnection sqlCon = new SqlConnection();
sqlCon.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Integrated Security=True;Connect Timeout=30";
sqlCon.Open();
try
{
for (int i = 7; i < selectRows.Length; i++)
{
DataRow row = selectRows[i];
SqlCommand sqlCmd = new SqlCommand("INSERT INTO Track (CUE_NR,TRACK_ID,TITLE,ARTIST,LABEL,COMPOSER,PUBLISHER,TC_IN,TC_OUT,DURATION,FILENAME) VALUES (@CUE_NR,@TRACK_ID,@TITLE,@ARTIST,@LABEL,@COMPOSER,@PUBLISHER,@TC_IN,@TC_OUT,@DURATION,@FILENAME)", sqlCon);
sqlCmd.Parameters.AddWithValue("@CUE_NR", row.ItemArray[0]);
sqlCmd.Parameters.AddWithValue("@TRACK_ID", row.ItemArray[1]);
sqlCmd.Parameters.AddWithValue("@TITLE", row.ItemArray[2]);
sqlCmd.Parameters.AddWithValue("@ARTIST", row.ItemArray[3]);
sqlCmd.Parameters.AddWithValue("@LABEL", row.ItemArray[4]);
sqlCmd.Parameters.AddWithValue("@COMPOSER", row.ItemArray[5]);
sqlCmd.Parameters.AddWithValue("@PUBLISHER", row.ItemArray[6]);
sqlCmd.Parameters.AddWithValue("@TC_IN", row.ItemArray[7]);
sqlCmd.Parameters.AddWithValue("@TC_OUT", row.ItemArray[8]);
sqlCmd.Parameters.AddWithValue("@DURATION", row.ItemArray[9]);
sqlCmd.Parameters.AddWithValue("@FILENAME", "Filename");
sqlCmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show("WhyNot: " + ex);
}
finally
{
sqlCon.Close();
}
}