C# 为什么我得到OLEDBEException“一个或多个必需参数没有给定值?”
这是我的代码:C# 为什么我得到OLEDBEException“一个或多个必需参数没有给定值?”,c#,.net,sql,oledb,C#,.net,Sql,Oledb,这是我的代码: command.CommandText = "SELECT DISTINCT B.* FROM BlankFormSubmissions B, Actions A WHERE B.FormName = " + GenericRoutines.SqlFmt(form.Name) + " AND B.ProcessName = A.ProcessName AND B.ActionName = A.ActionName" + " ORDER BY B.ID
command.CommandText =
"SELECT DISTINCT B.* FROM BlankFormSubmissions B, Actions A WHERE B.FormName = " +
GenericRoutines.SqlFmt(form.Name) +
" AND B.ProcessName = A.ProcessName AND B.ActionName = A.ActionName" +
" ORDER BY B.ID";
OleDbDataReader reader = command.ExecuteReader();
SQL是:
SELECT DISTINCT B.*
FROM BlankFormSubmissions B, Actions A
WHERE B.FormName = 'FindingNemo'
AND B.ProcessName = A.ProcessName
AND B.ActionName = A.ActionName
ORDER BY B.ID
您需要引用传递到查询中的任何字符串。尝试:
command.CommandText = "SELECT DISTINCT B.* FROM BlankFormSubmissions B, Actions A WHERE B.FormName = '" +
GenericRoutines.SqlFmt(form.Name) + "' AND B.ProcessName = A.ProcessName AND B.ActionName = A.ActionName" +
" ORDER BY B.ID";
一旦你过了v,就容易多了。涉及的学习曲线较小,使用参数化查询或存储过程来完成这类工作更整洁、更安全
HTH.您需要引用传递到查询中的任何字符串。尝试:
command.CommandText = "SELECT DISTINCT B.* FROM BlankFormSubmissions B, Actions A WHERE B.FormName = '" +
GenericRoutines.SqlFmt(form.Name) + "' AND B.ProcessName = A.ProcessName AND B.ActionName = A.ActionName" +
" ORDER BY B.ID";
一旦你过了v,就容易多了。涉及的学习曲线较小,使用参数化查询或存储过程来完成这类工作更整洁、更安全
HTH.我通过在Access中运行SQL发现,我实际上只是引用了Access表中不存在的列FormName。我通过在Access中运行SQL发现,实际上我只是引用了Access表中不存在的列FormName。使用参数化查询,而不是将SQL语句串联在一起-帮助…..嗨,如果只使用命令文本:SELECT DISTINCT B.*FROM blankFormB,动作A?当你在做的时候,试着在内部连接中使用更新的标准化ANSI连接语法。。。。在…上子句-有助于避免不需要的笛卡尔积,而且阅读和理解起来更加清晰…谢谢大家,但是这段代码可以完美地防止任何攻击,方法是你看不到的实现,GenericRoutines.SqlFmt…@Lost Hobbit-如果这是真的,我很想看到SqlFmt。使用参数化查询,而不是将SQL语句连接在一起-帮助…..嗨,如果只使用命令文本,它是如何工作的:从BlankFormSubmissions B中选择DISTINCT B.*和BlankFormSubmissions B,Actions A?当您使用时,尝试使用新的、标准化的ANSI连接语法和内部连接。。。。在…上子句-有助于避免不需要的笛卡尔积,而且阅读和理解起来更加清晰…谢谢大家,但是这段代码可以完美地防止任何攻击,方法是你看不到的,GenericRoutines.SqlFmt…@Lost Hobbit-如果是真的,我很想看到SqlFmt。谢谢,但我的方法SqlFmt为我添加了引号。这是一句来自计算的古老格言,缩写为“PSIGSO”-“输入Sh1t,输出Sh1t”。也许发布一个更完整的代码示例会给您带来更多有用的答案;-很高兴你对它进行了排序。我认为我发布代码生成的SQL已经足够了。。。如果没有表定义,一切都是错误的,因为IDE找不到任何引用的db对象。这是一条直线,不是通向全能上帝的直线-谢谢,但我的方法SqlFmt为我添加了引号。这是一句古老的计算格言,缩写为“PSIGSO”-“输入Sh1t,输出Sh1t”。也许发布一个更完整的代码示例会给您带来更多有用的答案;-很高兴你对它进行了排序。我认为我发布代码生成的SQL已经足够了。。。如果没有表定义,一切都是错误的,因为IDE找不到任何引用的db对象。这是一条直线,不是通向全能上帝的直线-