OleDb 参数到 OleDbCommand 不传递到查询
OleDb Parameter Into OleDbCommand Not Passing into Query
我正在尝试将一串数字传递到一个查询中,该查询将 运行 针对我们的 AS400 连接,但我的值似乎并没有真正进入查询。当我调试到参数点时,我返回了一个结果,所以我知道我得到了我的号码。
var command = new OleDbCommand("SELECT UMACT, UMCUS, UMNAM, UMAD1, UMAD2, UMAD3, UMZIP, UMOPH, UMSLC FROM CFFILES.UMST WHERE trim(UMEMT) = '?' ", connection);
//Test meter number: 59115796
connection.Open();
OleDbParameterCollection paramCollection = command.Parameters;
paramCollection.Add(meternumber.ToString(), OleDbType.LongVarChar);
当我将一个数字直接传递给查询时,它 returns 是一个完美的结果,但是当我尝试从参数传递一个数字时,它 returns 为空。
这是我知道传递给我在上面创建的参数的变量本身,因为当我调试到该行时我得到了一个结果。
public IEnumerable<CustomerInfoModel> GetCustomerInfo()
{
int meternumber = 59115796;
getAS400Data(meternumber);
return customerList;
}
要使我的 AS400 查询正常工作,我必须在 ?在查询中,所以我不确定这是否可能导致问题。
您对 Add 方法的调用有误。 Add的第一个参数是参数的Name,第二个是DataType,最后应该这样设置参数的值
OleDbParameterCollection paramCollection = command.Parameters;
paramCollection.Add("whatever", OleDbType.LongVarChar).Value = meternumber.ToString();
See OleDbParameterCollection.Add
不,您不应该在问号占位符周围添加刻度。如果你这样做,你将你的占位符转换为文字字符串,显然你没有任何带有问号作为值的行。
最后一点,在 OleDb 中,参数没有名称,但是当您将它们添加到您的集合中时,您应该提供一个名称,这样您就可以自由选择您喜欢的名称。请记住让它们保持与占位符 (?) 在查询字符串中出现的顺序相同
我正在尝试将一串数字传递到一个查询中,该查询将 运行 针对我们的 AS400 连接,但我的值似乎并没有真正进入查询。当我调试到参数点时,我返回了一个结果,所以我知道我得到了我的号码。
var command = new OleDbCommand("SELECT UMACT, UMCUS, UMNAM, UMAD1, UMAD2, UMAD3, UMZIP, UMOPH, UMSLC FROM CFFILES.UMST WHERE trim(UMEMT) = '?' ", connection);
//Test meter number: 59115796
connection.Open();
OleDbParameterCollection paramCollection = command.Parameters;
paramCollection.Add(meternumber.ToString(), OleDbType.LongVarChar);
当我将一个数字直接传递给查询时,它 returns 是一个完美的结果,但是当我尝试从参数传递一个数字时,它 returns 为空。
这是我知道传递给我在上面创建的参数的变量本身,因为当我调试到该行时我得到了一个结果。
public IEnumerable<CustomerInfoModel> GetCustomerInfo()
{
int meternumber = 59115796;
getAS400Data(meternumber);
return customerList;
}
要使我的 AS400 查询正常工作,我必须在 ?在查询中,所以我不确定这是否可能导致问题。
您对 Add 方法的调用有误。 Add的第一个参数是参数的Name,第二个是DataType,最后应该这样设置参数的值
OleDbParameterCollection paramCollection = command.Parameters;
paramCollection.Add("whatever", OleDbType.LongVarChar).Value = meternumber.ToString();
See OleDbParameterCollection.Add
不,您不应该在问号占位符周围添加刻度。如果你这样做,你将你的占位符转换为文字字符串,显然你没有任何带有问号作为值的行。
最后一点,在 OleDb 中,参数没有名称,但是当您将它们添加到您的集合中时,您应该提供一个名称,这样您就可以自由选择您喜欢的名称。请记住让它们保持与占位符 (?) 在查询字符串中出现的顺序相同