C#を使用してmysqlテーブルに新しい行を挿入する必要があります。 テーブルはlike thisとなり、1つの外部キー列を含みます。 私は以下のコードを使用してデータベースに接続し、データを挿入します。C#to mysql - 外部キーを使用して新しい行をテーブルに挿入する
public virtual void addToDB()
{
try
{
//prepare for query
var cmd = MySQL.readyQuery();
//insert testdata to Vo2test
cmd.CommandText = "INSERT INTO vo2test_tb(ClientID, Weight, Methods, TimeOfDay, Date, StartResistance, Endresistance, TheoreticalMaxPulse, FatPercent3point, FatPercent7point, VO2_max, FitnessRating, HRmax, RERmax, TestTime, Raw_test_data) VALUES((SELECT UserID from user_tb WHERE UserID = '@UserID'), '@Weight', '@Method', '@Timeofday', '@Date', '@Startresistance', '@Endresistance', '@Theoreticalmaxpulse', '@Fatprocent3p', '@Fatprocent7p', '@vo2max', '@fitnessrating', '@hrmax', '@rermax', '@testtime', '@rawtestdata')";
cmd.Prepare();
//insert parameters som skal ændres:
cmd.Parameters.AddWithValue("@UserID", UserID);
cmd.Parameters.AddWithValue("@Weight", Weight);
cmd.Parameters.AddWithValue("@Method", Method);
//coverts date to 0000-00-00
string DateString = Convert.ToString(TestDate.Date.Date.Year) + "-" + Convert.ToString(TestDate.Date.Month) + "-" + Convert.ToString(TestDate.Date.Day);
cmd.Parameters.AddWithValue("@Date", DateString);
//converts time to 00:00:00.
string TimeString = Convert.ToString(TimeOfDay.Hour) + ":" + Convert.ToString(TimeOfDay.Minute) + ":00";
cmd.Parameters.AddWithValue("@Timeofday", TimeString);
cmd.Parameters.AddWithValue("@Startresisstance", StartResistance);
cmd.Parameters.AddWithValue("@Endressistance", EndResistance);
cmd.Parameters.AddWithValue("@TheoreticalMaxPulse", TheoreticMaxPulse);
cmd.Parameters.AddWithValue("@FatPercent3point", FatPercent3Point);
cmd.Parameters.AddWithValue("@FatPercent7point", FatPercent7Point);
cmd.Parameters.AddWithValue("@VO2_max", Vo2Max);
cmd.Parameters.AddWithValue("@FitnessRating", FitnessRating);
cmd.Parameters.AddWithValue("@HRmax", HRmax);
cmd.Parameters.AddWithValue("@RERmax", RERmax);
cmd.Parameters.AddWithValue("@TestTime", TimeOfDay);
cmd.Parameters.AddWithValue("@Raw_test_data", RawTestData);
cmd.ExecuteNonQuery();
//close connection
cmd.Connection.Close();
}
catch (MySqlException ex)
{
Console.WriteLine(ex.Message);
}
}
私はそれを実行したとき、私はクライアントIDがnullにすることはできませんと言われていますが、私はちょうどAdminerでSQLクエリを実行する場合、それが正常に動作します。
ClientIDのサブ選択が正しいことを確認してください。それはあなたがFIrstNameに対してUserIDを比較し、UserIDを返すところで正しいとは思わない – CathalMF
"@"を "?"に置き換えてみましたか? ? "@"はSQLServer用です –
@MarrowGnawer MySQLで@です – CathalMF