C# C是否将TableAdapter Query@参数添加为int和date?

C# C是否将TableAdapter Query@参数添加为int和date?,c#,sql,tableadapter,C#,Sql,Tableadapter,我正在为表适配器创建一个如下所示的查询 SELECT COUNT(*) FROM Trip WHERE ShipCode = @ShipCode AND Date < @TodayPlusWeek 问题是这个方法需要字符串,字符串作为参数,我需要它接受int作为ShipCode,Date作为Date 有什么办法吗 非常感谢 第一部分是设置一对适当类型的变量,以保存Sql参数的正确值: int iShipCode; DateTime

我正在为表适配器创建一个如下所示的查询

SELECT COUNT(*) FROM Trip WHERE ShipCode = @ShipCode 
                           AND Date < @TodayPlusWeek
问题是这个方法需要字符串,字符串作为参数,我需要它接受int作为ShipCode,Date作为Date

有什么办法吗


非常感谢

第一部分是设置一对适当类型的变量,以保存Sql参数的正确值:

int iShipCode;
DateTime dtTodayPlusWeek;
一旦你有了它,我们将对你当前的字符串变量运行一个TryParse方法来转换成我们的新变量。由于我不知道方法中的变量名,我将它们泛化为strShipCode,strTodayPlusWeek。如果TryParse方法失败,可以为查询设置默认值;我使用了0和今天+1周

if (!int.TryParse(strShipCode, out iShipCode)) {
    iShipCode = 0;
}
if (!DateTime.TryParse(strTodayPlusWeek, out dtTodayPlusWeek)) {
    dtTodayPlusWeek = DateTime.Now.AddDays(7);
}
现在我们有了正确的数据类型,可以将其作为参数添加到现有查询中

StringBuilder sbCmd = new StringBuilder();
  sbCmd.Append("SELECT COUNT(*) ");
  sbCmd.Append("FROM Trip ");
  sbCmd.Append("WHERE (ShipCode = @ShipCode) ");
  sbCmd.Append("AND Date < @TodayPlusWeek");

string txtCmd = sbCmd.ToString();

int iQryReturn;

using (SqlCommand cmd = new SqlCommand(txtCmd, conn)) {
    cmd.CommandType = CommandType .Text;
    cmd.Parameters.AddWithValue("@ShipCode", iShipCode;);
    cmd.Parameters.AddWithValue("@TodayPlusWeek", dtTodayPlusWeek);

    try {
        conn.Open();
        iQryReturn = (int)cmd.ExecuteScalar();
    }
    catch(Exception ex) {
        iQryReturn = -1;
        // Your Exception handling here
    }
    finally {
        conn.Close();
        // Your cleanup code if any
    }
}
由于不知道您使用的是哪种类型的数据库设置,我用ADO for Sql Server编写了这篇文章。只有返回的值;对于count*,我为返回添加了一个整数变量。如果有错误,该值将设置为-1


具体应用程序可能需要的实现和语法更改取决于您。

请验证字符串是否在方法中,以及Sql列是否为int&datetime表中的列是否已为int,dateSqlParameter是否采用类型参数。只需指定正确的类型。