【问题标题】:Visual Basic - No value given for one or more required parametersVisual Basic - 没有为一个或多个必需参数提供值
【发布时间】:2015-10-27 09:30:53
【问题描述】:

我有一个DataGridView,它显示了一个表的内容(带有 sql 查询)。但是每当我运行代码时,它都会显示此错误:

没有为一个或多个必需参数指定值。

哪里出错了?程序运行没有显示任何错误。

这是在DataGridView中显示的代码:

        Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\BSPDatabase.accdb"
        MyConn = New OleDbConnection
        MyConn.ConnectionString = connString
        ds = New DataSet
        tables = ds.Tables
        da = New OleDbDataAdapter("Select * from [Transactions] where transMonth=" & monthCombobox.Text & "", MyConn)
        da.Fill(ds, "BSPDatabase") 'Change items to your database name
        Dim view As New DataView(tables(0))
        source1.DataSource = view
        TransactionsDataGridView.DataSource = view

【问题讨论】:

  • 你有没有在on error resume next语句上方的代码中的某个地方?
  • @psychicebola 不,我没有。
  • transMonth 是什么数据类型?什么是monthCombobox.Text?也许你需要类似String.Format("Select * from [Transactions] where transMonth ='{0}'", monthCombobox.text)
  • @Fruitbat transMonth 是短文本,monthCombobox 是组合框

标签: vb.net visual-studio datagridview


【解决方案1】:

我认为您正在形成错误的 SQL。该值需要用引号引起来。

   da = New OleDbDataAdapter(String.Format("Select * from [Transactions] where transMonth ='{0}'", monthCombobox.text), MyConn)

【讨论】:

  • 实际上,OP 应该使用参数化查询,而不是连接字符串来创建语句。当前的问题只是串联引发的问题之一。 SQL 注入攻击、由于字符串格式差异而丢失小数或日期值、性能差和可维护性差只是其中的一些问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
相关资源
最近更新 更多