Ich muss eine neue Zeile in einer MySQL-Tabelle mit C# einfügen. Die Tabelle sieht like this aus und enthält eine Fremdschlüsselspalte. Ich benutze den folgenden Code, um mit der Datenbank zu verbinden und Daten einzufügen.C# zu mysql - neue Zeile in Tabelle mit Fremdschlüssel einfügen
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);
}
}
, wenn ich es laufen, bin ich gesagt, dass ClientID nicht null sein kann, aber wenn ich die SQL-Abfrage in Adminer nur laufen funktioniert es gut.
Sind Sie sicher, dass Ihre Sub-Auswahl für die ClientID korrekt ist. Es sieht nicht richtig aus, wo Sie die UserID mit dem FIrstName vergleichen und die UserID zurückgeben – CathalMF
Haben Sie versucht, indem Sie das "@" durch "?" ? "@" sind für SQLServer –
@MarrowGnawer Es ist @ in MySQL – CathalMF