.net c#で作業しています。テーブルにデータを挿入したいと思います。C#挿入クエリでスカラー変数 "@SomeThing"を宣言する必要があります。
私はVisual Studioでの書き込みクエリであり、ストアドプロシージャを使用していません。
それはif
一部になりしないと私はMust declare the scalar variable "@Occurrence_Time"
という名前の例外を取得しています。これは、私のクエリ
SqlCommand cmd2 = new SqlCommand("insert into Device_Events (Device_ID, Event_ID, Occurrence_Time, Recovery_Time) values (@Device_ID , @Event_ID, @Occurrence_Time, @Recovery_Time)", con);
であり、これはそれで
// For Events
string formatString = "yyMMddHHmmss";
DateTime Occurrence_Time, Recovery_Time;
string strOccurrence = Meter_data.Substring(161, 12);
string strRecovery = Meter_data.Substring(173, 12);
cmd2.Parameters.AddWithValue("@Device_ID", device_Id);
cmd2.Parameters.AddWithValue("@Event_ID", event_Id);
if (DateTime.TryParseExact(strOccurrence, formatString, CultureInfo.InvariantCulture, DateTimeStyles.None, out Occurrence_Time))
{
if (DateTime.TryParseExact(strRecovery, formatString, CultureInfo.InvariantCulture, DateTimeStyles.None, out Recovery_Time))
{
cmd2.Parameters.AddWithValue("@Occurrence_Time", SqlDbType.DateTime).Value = Occurrence_Time;
cmd2.Parameters.AddWithValue("@Recovery_Time", SqlDbType.DateTime).Value = Recovery_Time;
}
}
int Device_Events_rows_executed = cmd2.ExecuteNonQuery();
Console.WriteLine("Rows Executed: '{0}'", Device_Events_rows_executed);
を値を渡すための私のC#コードであります
また、私はこのlinkを読んだが、助けを見つけることができませんでした。
それは私とエラーまたは例外を示すないですが、それでも、それは両方のif
条件に入っていませんが、私はコード
cmd2.Parameters.Add("@Device_ID", SqlDbType.VarChar, 50).Value = device_Id;
cmd2.Parameters.Add("@Event_ID", SqlDbType.VarChar, 50).Value = event_Id;
cmd2.Parameters.Add("@Occurrence_Time", SqlDbType.DateTime, 50).Value = DBNull.Value;
cmd2.Parameters.Add("@Recovery_Time", SqlDbType.DateTime, 50).Value = DBNull.Value;
string formatString = "yyMMddHHmmss";
DateTime Occurrence_Time, Recovery_Time;
string strOccurrence = Meter_data.Substring(161, 12);
string strRecovery = Meter_data.Substring(173, 12);
if (DateTime.TryParseExact(strOccurrence, formatString, CultureInfo.InvariantCulture, DateTimeStyles.None, out Occurrence_Time))
{
cmd2.Parameters["@Occurrence_Time"].Value = Occurrence_Time;
}
if (DateTime.TryParseExact(strRecovery, formatString, CultureInfo.InvariantCulture, DateTimeStyles.None, out Recovery_Time))
{
cmd2.Parameters["@Recovery_Time"].Value = Recovery_Time;
}
の以下の部分を追加した提案の後に更新されたコード
に
助けを歓迎します
すべてのクエリパラメータには常に値を指定する必要があります。間違った形式で開始されたデータがあっても、これは変わらないからです。 – Richard
実際のコードですか?あなたは 'AddWithValue'を使用していますが、あなたが' Add'を使用しようとしているかのように引数を渡しています - 私は[AddWithValue'をまったく使っていません](http://blogs.msmvps.com/jcoehoorn/blog/2014/05)/12/can-we-stop-using-addwithvalue-already /)を使用します。 – GarethD
あなたの列のタイプは何ですか?Occurrence_Time? –