我正在尝试使用参数执行MS Access查询,但总是收到错误,即需要另外1个参数。这是我的查询
PARAMETERS RendszamParam Text ( 255 );
SELECT *
FROM Auto
WHERE Rendszam=[RendszamParam];
调用查询的方法:
public Auto RendszamAlapjan (string rendszam)
{
Auto auto = null;
using (OleDbConnection connection = new OleDbConnection(KapcsolatAdatai.KapcsolatiString))
{
OleDbCommand command = connection.CreateCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "AtoRendszamAlapjan";
command.Parameters.Add("@RendszamParam", OleDbType.VarChar).Value = rendszam;
//command.Parameters.Add("@RendszamParam", OleDbType.VarChar).Value = rendszam;
connection.Open();
using (OleDbDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
auto = MapEntiy(reader);
}
}
}
return auto;
}
private Auto MapEntiy(OleDbDataReader data)
{
Auto auto = new Auto
{
Rendszam = data["rendszam"].ToString(),
Tipus = data["tipus"].ToString(),
Kategoria = data["kategoria"].ToString(),
UtasokSzama = int.Parse(data["utasok_szama"].ToString()),
AjtokSzama = int.Parse(data["ajtok_szama"].ToString()),
Tempomat = bool.Parse(data["tempomat"].ToString()),
BerletiDij = double.Parse(data["berleti_dij"].ToString())
};
return auto;
}
在 RendszamAlapjan 中,如果我将参数加倍(注释行),它可以正常工作,但没有它,我会收到一条错误消息,指出还需要一个参数,我无法弄清楚原因。
我想通了。
在查询中,我们不必指定参数,只需在查询中使用@sing,Accsess 2013 将自动识别这是一个变量(参数),如下所示:
SELECT *
FROM Auto
WHERE Rendszam=[@RendszamParam];
调用方法如下所示:
public Auto RendszamAlapjan (string rendszam)
{
Auto auto = null;
using (OleDbConnection connection = new OleDbConnection(KapcsolatAdatai.KapcsolatiString))
{
OleDbCommand command = connection.CreateCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "AtoRendszamAlapjan";
command.Parameters.Add("@RendszamParam", OleDbType.VarChar).Value = rendszam;
connection.Open();
using (OleDbDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
auto = MapEntiy(reader);
}
}
}
return auto;
}
希望帮助了某人。