MS Access / OleDB:没有为一个或多个必需参数提供值

问题描述 投票:0回答:2

这到目前为止是我在任何情况下见过的最糟糕的错误消息。从SQL Server传来的,现在正在改造旧版Access数据库,此错误不断地反复出现,并且每次都是一次完整的反复试验,浪费大量时间。

关于如何有效调试此错误的任何有用提示?像是给了最细微的提示?我正在使用C#。

database ms-access debugging
2个回答
0
投票

您可以使用ADO创建查询,然后列出查询期望的所有参数:

ADODB.Connection conn = new ADODB.Connection();
conn.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Path\\To\\db.accdb");
ADODB.Command cmd = new ADODB.Command
{
    CommandText = "SELECT * FROM tblUsers WHERE username = bob", 
    //Oops, forgot to quote the username, results in No value given for parameter error
    ActiveConnection = conn
};
foreach(ADODB.Parameter param in cmd.Parameters)
{
    Console.WriteLine(param.Name); //bob
}
Console.ReadLine();

这需要对ADO的引用,可以通过COM引用来输入。

您还可以使用后期绑定来防止额外的引用,如果仅将其用作调试代码但希望在项目中使用它,则可能需要这样做,请参阅this Q&A。>>

由于OLEDB不支持命名参数,很遗憾,您无法为此名称使用OLEDB。

当然,您可以将其重写为一个采用查询字符串并以字符串形式返回预期参数的函数,然后在调试时在即时窗口中使用该函数。


0
投票

好吧,如果使用说的sql服务器,则会启动SQL Studio,然后以这种方式尝试sql。

© www.soinside.com 2019 - 2024. All rights reserved.