asp.net - OLEDBException:vb.net 中没有为一个或多个必需参数给出值

标签 asp.net vb.net parameters oledbexception

我是编程新手,在 VB.net 中编写的 Web 应用程序遇到问题。我的项目中有一个 Access 数据库,并使用参数化查询从中检索信息。奇怪的是,我在另一个页面上使用几乎相同的查询,效果很好,但是这个页面给了我“没有为一个或多个必需参数给出值”错误。我一天大部分时间都在搜索,意识到问题已被提出,但找不到解决我的问题的方法。我想我正在使用“?”正确,以正确的顺序拥有正确数量的参数,并且所有内容都拼写正确。这是我的代码:

 Dim strWthStn As String
    strWthStn = cboRainProb2.Text
    Dim strWthStnParm As New OleDb.OleDbParameter()
    strWthStnParm.Value = strWthStn

    Dim strMonth As String
    strMonth = cboRainProb.Text
    Dim strMonthParm As New OleDb.OleDbParameter()
    strMonthParm.Value = strMonth

    Dim sql As String 'Query to select the station for rainfall probability values

    sql = "SELECT 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 " &
    "FROM Rainfall Probability " &
    "WHERE Station = ?" &
    "AND Mth = ?"

    'Connects to the Access database and selects data based on query
    Dim AccessConnect As String
    AccessConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Megan\Visual Studio Projects\DroughtCalculatorND_Web\DroughtCalculatorND_Web\NDStations.mdb"
    Dim conn As New OleDb.OleDbConnection
    Dim selectCommand As New OleDbCommand(sql, conn)
    selectCommand.Parameters.Add(strWthStnParm)
    selectCommand.Parameters.Add(strMonthParm)
    conn.ConnectionString = AccessConnect
    conn.Open()

    'Reads the data into a list
    Dim reader As OleDbDataReader =
        selectCommand.ExecuteReader(CommandBehavior.CloseConnection)
    Dim RainByYear As New List(Of Double)
    reader.Read()
    RainByYear.Add(reader("1999"))
    RainByYear.Add(reader("2000"))
    RainByYear.Add(reader("2001"))
    RainByYear.Add(reader("2002"))
    RainByYear.Add(reader("2003"))
    RainByYear.Add(reader("2004"))
    RainByYear.Add(reader("2005"))
    RainByYear.Add(reader("2006"))
    RainByYear.Add(reader("2007"))
    RainByYear.Add(reader("2008"))
    RainByYear.Add(reader("2009"))
    RainByYear.Add(reader("2010"))

    RainByYear.Sort()

等等

OleDBDataReader 行的 Dim 读取器处的程序错误。我在那里使用了一个断点来检查所有内容,并且两个参数都有正确的值。感谢您的帮助,谢谢。

最佳答案

包含空格的名称需要括号:

"FROM [Rainfall Probability] "

您的编号字段名称还可能:

SELECT [1999], [2000] etc...

关于asp.net - OLEDBException:vb.net 中没有为一个或多个必需参数给出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15822240/

相关文章:

c# - 在通用处理程序中接收 HTTP Post 时如何异步刷新主页?

c# - 如何从 java 中的文件绘制图形(线)?

javascript - Jquery - 动态传递参数给函数

mysql - 指定要在 dv.Table.Rows(x)(VALUE).ToString() 中使用的行

vb.net - 如何从数据表中选择数据

sql - 参数只能与其他参数一起工作,但我希望它们独立工作

php - 通过 URL 传递多个变量并在下一页读取所有变量

c# - 通过 ASP.NET Web 应用程序在 IIS 上自动部署 Web 应用程序?

c# - 如何在 ASP.Net 中切割日期时间数据类型

javascript - 在不阻止 javascript 的情况下显示 javascript 警报