すべてのWebを検索しましたが、私の問題の解決策は見つかりませんでした。私はC#とスタックオーバーフローコミュニティの新人ですが、本当にこの問題に悩まされています。Int32からDateTimeにパラメータ値を変換できません
私はdatagridview
に日付と時刻を別々に追加するボタンがあります。行私はSQL Serverで行の値を保存していますが、その例外Failed to convert parameter value from a Int32 to a DateTime
を与えることを充填しながら、私はそれは、C#でdatabase.dataタイプを送信し、SQL Serverは、ここでDatetime
でのDataGridViewする日付と時刻を追加するコードだとき
private void addDateTime2_Click(object sender, EventArgs e)
{
int n = dataGridView2.Rows.Add();
dataGridView2.Rows[n].Cells[0].Value = dateTimePicker9.Value.ToString("dd-MM-yyyy");
dataGridView2.Rows[n].Cells[1].Value = dateTimePicker7.Value.ToString("HH:mm:ss");
}
ここで私は、データベースに挿入するコードです:
for (int i = 0; i < dataGridView2.Rows.Count; i++)
{
string StrQuery = "INSERT INTO [dbo].[callRedirect] (ISFsectionId, callRedirectDate, incidentNo, callRedirectTime, callRedirectGrade, callRedirectFName, callRedirectLName, callRedirectSerialNo, callRedirectRemark) VALUES (@ISFsectionId, @callRedirectDate, @incidentNo, @callRedirectTime, '"
+ dataGridView2.Rows[i].Cells["Column12"].Tag + "', '" + dataGridView2.Rows[i].Cells["Column13"].Value + "', '" + dataGridView2.Rows[i].Cells["Column14"].Value + "', '" + dataGridView2.Rows[i].Cells["Column20"].Value + "', '" + dataGridView2.Rows[i].Cells["Column19"].Value + "')";
SqlCommand cmd = cnn.CreateCommand();
cmd.CommandText = StrQuery;
cmd.Parameters.AddWithValue("@incidentNo", textBox4.Text);
cmd.Parameters.AddWithValue("@callRedirectDate", dataGridView2.Rows[i].Cells[0].Value);
cmd.Parameters.AddWithValue("@callRedirectTime", dataGridView2.Rows[i].Cells[1].Value);
cmd.Parameters.Add("@ISFsectionId", SqlDbType.DateTime).Value = dataGridView2.Rows[i].Cells["Column11"].Tag;
cmd.Connection = cnn;
cmd.ExecuteNonQuery();
}
デバッガでは、dataGridView2.Rows [i] .Cells [0] .Valueの値は何ですか? –
あなたは試してみましたか?cmd.Parameters.AddWithValue( "@ callRedirectDate"、Convert.ToDatetime(dataGridView2.Rows [i] .Cells [0] .Value)); –
エラーは、データ型が* DateTimeではなく 'int'であることを示します。あなたのコードはグリッド内の日付の代わりに*文字列*を格納しますが、これは別の(深刻な)バグです。このエラーをスローできる行は 'cmd.Parameters.Add(" @ ISFsectionId "、SqlDbType.DateTime)です.Value = dataGridView2.Rows [i] .Cells [" Column11 "]。Tag;' I'd betその 'Tag'にはintが入っています –