C#を使用してこのMySQLに複数行のデータを入力する必要があります。
1つの行を挿入するためのこのコードを以下に示しますが、一度に複数の行にアプローチする方法がわかりません。テーブルに最大8行を入力する必要があります。複数のコンストラクターを作成する必要がありますか、それともより良い方法がありますか?
public class Vo2phases
{
//properties for vo2max phases
public int VO2TestID { get; set; }
public int Phase { get; set; }
public DateTime Time { get; set; }
public int Intensity { get; set; }
public double RER { get; set; }
public int Borgscale { get; set; }
public int Pulse { get; set; }
public Vo2phases(int _vo2testid, int _phase,
DateTime _time, int _intensity,
double _rer, int _borgscale, int _pulse)
{
//set parameters for phases
VO2TestID = _vo2testid;
Phase = _phase;
Time = _time;
Intensity = _intensity;
RER = _rer;
Borgscale = _borgscale;
Pulse = _pulse;
}
public void addToDB()
{
try
{
//prepare for query
var cmd = MySQL.readyQuery();
//insert testdata to Vo2test
cmd.CommandText = "INSERT INTO vo2phases_tb (Vo2_TestID, Phase, Time, Intensity, RER, Borgscale, Pulse) VALUES (@Vo2testid, @phase, @time, @intensity, @rer, @borgscale, @pulse);";
cmd.Prepare();
cmd.Parameters.AddWithValue("@vo2testid", VO2TestID);
cmd.Parameters.AddWithValue("@phase", Phase);
string TimeString = "00:" + Convert.ToString(Time.TimeOfDay.Hours) + ":" + Convert.ToString(Time.TimeOfDay.Minutes);
cmd.Parameters.AddWithValue("@time", TimeString);
cmd.Parameters.AddWithValue("@intensity", Intensity);
cmd.Parameters.AddWithValue("@rer", RER);
cmd.Parameters.AddWithValue("@borgscale", Borgscale);
cmd.Parameters.AddWithValue("@pulse", Pulse);
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
catch (MySqlException ex)
{
Console.WriteLine(ex.Message);
}
}
あなたの問題は、あなたのコードで1つのVo2phaseしか期待していないように見えることです。
これは概念的にも実行においても問題ではありませんが、送信されているコレクションを考慮していないため、問題はありません。
addToDB
Listをパラメーターとして受け入れるようにオーバーロードします。
public void addToDB(List<Vo2phase> phases)
{
try
{
//prepare for query
var cmd = MySQL.readyQuery();
//insert testdata to Vo2test
cmd.CommandText = "INSERT INTO vo2phases_tb (Vo2_TestID, Phase, Time, Intensity, RER, Borgscale, Pulse) VALUES (@Vo2testid, @phase, @time, @intensity, @rer, @borgscale, @pulse);";
cmd.Prepare();
foreach (Vo2phase phase in phases)
{
cmd.Parameters.AddWithValue("@vo2testid", VO2TestID);
cmd.Parameters.AddWithValue("@phase", Phase);
string TimeString = "00:" + Convert.ToString(Time.TimeOfDay.Hours) + ":" + Convert.ToString(Time.TimeOfDay.Minutes);
cmd.Parameters.AddWithValue("@time", TimeString);
cmd.Parameters.AddWithValue("@intensity", Intensity);
cmd.Parameters.AddWithValue("@rer", RER);
cmd.Parameters.AddWithValue("@borgscale", Borgscale);
cmd.Parameters.AddWithValue("@pulse", Pulse);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
cmd.Connection.Close();
}
catch (MySqlException ex)
{
Console.WriteLine(ex.Message);
}
}
リストを作成するには、Vo2phasesをすべて追加するだけです。
List<Vo2phase> Phases = new List<Vo2phase>
{
new Vo2phase(VO2TestID = testId, Phase = i ...),
new Vo2phase(VO2TestID = testId, Phase = i ...),
new Vo2phase(VO2TestID = testId, Phase = i ...),
new Vo2phase(VO2TestID = testId, Phase = i ...),
new Vo2phase(VO2TestID = testId, Phase = i ...),
new Vo2phase(VO2TestID = testId, Phase = i ...),
new Vo2phase(VO2TestID = testId, Phase = i ...)
// add the parameters as you normally would.
};
お役に立てれば!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加