私はデータベースに新しい行を追加するためにdatagridviewを使用しようとしています。私は事前にグリッドにデータベース全体をロードし、それをリフレッシュしたくないと思います。私は、データグリッドの値をテーブルに追加したいだけです。私は回避策を見つけることができません。私がそれを正常に行うと、すべての変数が一意である必要があるというエラーが表示されます。 sqlconnection.parameters.clear()関数を追加しようとしましたが、すべての値が空になり、パラメータの必要な情報を提供していないというエラーが表示されるようです。パラメータを使ってテーブルにデータグリッドビューの値を繰り返し挿入しようとしています
string TicketTableInsertString = "INSERT INTO ticketTable (TicketID, num1, num2,num3,num4,num5) VALUES (@TicketID,@num1,@num2,@num3,@num4,@num5)";
SqlConnection sqlConn;
connString = "Data Source=DESKTOP-30191JE\\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
sqlConn = new SqlConnection(connString);
try
{
sqlConn.Open();
int ticketID=0;
SqlCommand selectTicketIDCMD = new SqlCommand(selectTicketIDString, sqlConn);
SqlCommand mainTableInsertCMD = new SqlCommand(MainTableInsertString, sqlConn);
SqlCommand ticketTableInsertCMD = new SqlCommand(TicketTableInsertString, sqlConn);
ticketID = (int)selectTicketIDCMD.ExecuteScalar()+1;
sqlConn.Close();
for (int i = 0; i < dgv_ticket.Rows.Count; i++)
{
ticketTableInsertCMD.Parameters.AddWithValue("@TicketID", ticketID);
ticketTableInsertCMD.Parameters.AddWithValue("@num1", dgv_ticket.Rows[i].Cells[0].Value);
ticketTableInsertCMD.Parameters.AddWithValue("@num2", dgv_ticket.Rows[i].Cells[1].Value);
ticketTableInsertCMD.Parameters.AddWithValue("@num3", dgv_ticket.Rows[i].Cells[2].Value);
ticketTableInsertCMD.Parameters.AddWithValue("@num4", dgv_ticket.Rows[i].Cells[3].Value);
ticketTableInsertCMD.Parameters.AddWithValue("@num5", dgv_ticket.Rows[i].Cells[4].Value);
sqlConn.Open();
ticketTableInsertCMD.ExecuteNonQuery();
sqlConn.Close();
}
私の投稿には既に私が試みたことが記載されています。代わりに、私はそれに値を与えていないと言って別のエラーを出しました。 –
実際にこの時点では、私のIDEが壊れているかもしれないかのように感じます。ランダムな宣言文でnullreferencesのエラーを投げ始めました。 –
は、forループ内でticketTableInsertCMDを定義してインスタンス化すると役立ちます。 – Hamed