0

本当に簡単な質問です。2つの変数「one_hour_ago」と「current_time」があります。次のように、これら2つの変数をsqlコマンドで渡す必要があります。

string commandString = "SELECT * from myTable where time between one_hour_ago and current_time";

これが私が持っているものですが、構文エラーが発生します

string commandString = "SELECT * from myTable where TS between ' and /" + one_hour_ago + "'" + current_time + "/"; 

ありがとう

4

3 に答える 3

7
string sqlString = "SELECT * FROM myTable WHERE time BETWEEN  @before AND @current_time"; 
SqlCommand oCmd = new SqlCommand(sqlString , connString);
oCmd.Parameters.AddWithValue("@before", date_before);
oCmd.Parameters.AddWithValue("@current_time", currentTime);

ここでdate_before、およびcurrentTimeはメソッドに渡すパラメーターです。

これはSQLインジェクションのものの世話をする必要があります

于 2012-06-04T22:29:26.313 に答える
0
create procedure Proc_name (@param1 varchar(100), 
@param2 varchar(100), 
@param3 varchar(100), 
@param4 varchar(100)) 
as 
insert into table1 values(@param1, @param2, @param3, @param4)

次に、コードから(ADO.NETを使用してac#の例を示します)

using (SqlConnection connection = new SqlConnection(connectionString))
{
// Create the command and set its properties.
SqlCommand command = new SqlCommand();
SqlCommand command = new SqlCommand 
   ("Proc_name", connection); 

command.CommandType = CommandType.StoredProcedure;

// Add the input parameters and set the properties.
SqlParameter parameter1 = new SqlParameter();
parameter.ParameterName = "@Param1";
parameter.SqlDbType = SqlDbType.NVarChar;
parameter.Direction = ParameterDirection.Input;
parameter.Value = param1;

SqlParameter parameter2 = new SqlParameter();
parameter.ParameterName = "@Param2";
parameter.SqlDbType = SqlDbType.NVarChar;
parameter.Direction = ParameterDirection.Input;
parameter.Value = param2;




// Add the parameter to the Parameters collection. 
command.Parameters.Add(parameter1);
command.Parameters.Add(parameter2);


// Open the connection and execute the reader.
connection.Open();
SqlDataReader reader = command.ExecuteNonQuery();

reader.Close();
}
于 2012-06-06T13:50:46.100 に答える
-2
string commandString = "SELECT * FROM myTable WHERE time BETWEEN '" + one_hour_ago + "' AND '" + current_time + "'";

編集:これはOPが明示的に求めたものです。より良い(正しい)答えについては、JaneDoeの...を見てください。

編集2:私を否定したすべての無視者にとって、「one_hour_ago」と「current_time」は明らかにユーザーが入力した文字列ではなく(しかし彼自身のDateTime変数)、いずれにせよ、それらを使用する前に単純なもので完全に絶対確実にすることができTryParseます(そしてその点でSQLパラメータも行うすべてであり、それに追加の魔法はありません)。さて、sql cmdを連結する文字列間違っていますが、私はそれを提案しませんでした。私は単にそれに対する彼自身のアプローチを修正しただけです。そして、SQLインジェクションについて彼に警告することもできましたが、彼が単純な文字列操作でどのように問題を抱えているかを見て、私はそれが最小であると判断しました彼の問題の(今のところ)、そしてそれは彼をさらに混乱させるだけだと思いました。

于 2012-06-04T22:20:29.297 に答える