如何使用参数调用Ms Access的存储查询

时间:2014-04-04 07:37:21

标签: c# winforms stored-procedures ms-access-2007

我在MS Access中添加了一个存储查询,以便在创建数据库时将数据插入带有参数的表中。

cmmd.CommandText = @"CREATE PROCEDURE queryAddAcc(AccNum text(50), AccName Text(50), By long, Date Date) AS 
INSERT INTO tableAccounts (AccNumber, AccountName, By, Date)
VALUES ([AccNum], [AccName], [By], [Date])";
cmmd.ExecuteNonQuery();

请告诉如何调用存储的查询以在“保存”按钮上插入值点击?

1 个答案:

答案 0 :(得分:2)

好吧,我绝对会以更中立的方式更改这些保留字。我的意思是By和Date是用于访问的保留字,因此需要围绕它们的方括号,但在您的上下文中没有理由以这种方式调用这些参数

cmmd.CommandText = @"CREATE PROCEDURE queryAddAcc(AccNum text(50), AccName Text(50), 
                     ByParam long, DateParam Date) AS 
                   INSERT INTO tableAccounts (AccNumber, AccountName, [By], [Date])
                   VALUES ([AccNum], [AccName], [ByParam], [DateParam])";
cmmd.ExecuteNonQuery();

当然我建议同样更改字段的名称。我相信如果我是你,我会忘记每次

接下来,要调用查询,只需要

OleDbCommand cmd = new OleDbCommand("queryAddAcc", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("AccNum", valueForAccNum);
..... add the other parameters here .....
cmd.ExecuteNonQuery();

请注意,您需要按照存储过程所需的确切顺序添加参数,因为OleDb不会努力按名称识别您的参数,并按正确的顺序分配值。