私は、日付の制約をいくつか指定してクエリを実行しています。以下のコードを日付がハードコードされ、パラメータなしで実行すると、期待した結果(単純な整数)が得られます。しかし、私はパラメータを使用しようとすると空の結果セットが得られます。エラーはなく、結果はありません。C#でOdbcConnectionで動作するパラメータを取得できません
log("Connecting to SQL Server...");
string connectionString = "DSN=HSBUSTEST32;";
string queryString = "SELECT COUNT(*) FROM Table WHERE myDateTime >= '?' AND myDateTime < '?'";
//string queryString = "SELECT COUNT(*) FROM Table WHERE myDateTime >= '@startDate' AND myDateTime < '@endDate'";
string startDate = "2016-08-23";
string endDate = "2016-08-24";
using (OdbcConnection connection = new OdbcConnection(connectionString))
{
OdbcCommand command = new OdbcCommand(queryString, connection);
command.Parameters.AddWithValue("startDate",startDate);
command.Parameters.AddWithValue("endDate", endDate);
//command.Parameters.Add("startDate", OdbcType.VarChar).Value = "2016-08-23";
//command.Parameters.Add("endDate", OdbcType.VarChar).Value = "2016-08-24";
try
{
connection.Open();
OdbcDataReader reader = command.ExecuteReader();
while (reader.Read())
{
log(reader[0].ToString());
}
reader.Close();
}
catch (Exception ex)
{
log(ex.Message);
}
}
あなたは私が名前付きパラメータと同様に?
プレースホルダを使用して両方を試した見ることができるように。私はまた、実際に私は違いを理解していませんが、Add()
とAddWithValue()
のパラメータを追加するいくつかの異なる方法を試してみました。
何が空の結果を引き起こしていますか?
はあなたのクエリから単一引用符を削除しようとしたことがありますか?また、私は、パラメータにaddrデータ型のアドバイスをします。 –
...一重引用符を削除して固定しました。説明してください。それはパラメータに含意されていますか? /フラストレーション –
それはデータ型が文字列なので、それだけですか? –