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是否采用类型参数。只需指定正确的类型。