如何使用c#将参数传递给Dataset进行查询

时间:2018-04-24 04:36:45

标签: c# dataset

我想在DataSet中更改SQL语句以添加查询

where LogTime between @parameter1 and @parameter2

如何将参数DateStrDateEnd传递给@parameter1@parameter2

来自c#方法

DataSet1 ds = new DataSet1();         

我想我们应该使用DataTable1TableAdapter

中的DataSet1

是否有任何建议的实施方式?

我们已在DataTable1TableAdapter已经

获得了这些查询
SELECT IPassLog.ParkID, ParkInfo.ParkName, IPassLog.UserID, IPassLog.LogTime, IPassLog.LogInTime, IPassLog.InitBalance,
                IPassLog.TranAmount, IPassLog.TranBalance, IPassLog.CheckDone, IPassLog.TranSN, IPassLog.PackName, IPassLog.ResultName, IPassLog.SettlementDate,
                IPass_Result_Hex.Result_Desc, IPass_ErrorCode.Explanation
                FROM IPassLog INNER JOIN ParkInfo ON IPassLog.ParkID = ParkInfo.ParkID
                FULL JOIN IPass_Result_Hex ON IPassLog.VerifyResult = IPass_Result_Hex.Result_Hex FULL JOIN IPass_ErrorCode ON IPassLog.VerifyFlag = IPass_ErrorCode.Code;

我希望在这些查询中添加where语句

2 个答案:

答案 0 :(得分:1)

按照帖子:Tutorial 1: Creating a Data Access Layer讨论如何处理表适配器查询中的参数。它也提供相同的代码示例。

如果您可以将参数传递给您的查询,那么创建像这样的参数

  SqlParameter param= new SqlParameter();
   param.ParameterName = "@parameter1";// Defining Name
   param.SqlDbType = SqlDbType.Int; // Defining DataType
   param.Direction = ParameterDirection.Input; // Setting the direction 
   param.Value = inputvalue;

并将创建的参数添加到命令对象

 // Adding Parameter instances to sqlcommand
   comm.Parameters.Add(param);

答案 1 :(得分:1)

您可以使用接受SqlCommand作为参数的SqlDataAdapter类构造函数。这样您就可以将参数化命令传递给此类以创建SqlDataAdapter的实例 我更喜欢你像thi一样使用:

string connectionString = "your connection string here";
string query = "select blah, foo from mytable where LogTime >= @parameter1 and LogTime<= @parameter2";
DataSet ds = new DataSet();
using (SqlCommand cmd = new SqlCommand(query, new SqlConnection(connectionString)))
{
    cmd.Parameters.Add("parameter1", SqlDbType.DateTime).Value = dateInput1;
    cmd.Parameters.Add("parameter2", SqlDbType.DateTime).Value = dateInput2;
    using (SqlDataAdapter adapter = new SqlDataAdapter(cmd)) {
        adapter.Fill(ds);
    }
}