【发布时间】:2018-02-07 22:10:01
【问题描述】:
我试图在 vb 中获取组合框的选定项的值以保存到数据库中,但它给了我以下错误
列类的整数值“System.Data.DataRowView”不正确 第1行
这是我的部分代码
Dim Query As String
Query = "INSERT INTO smartaccounts.basic_fee (class, term, amount) VALUES(?, ?, ?)"
command = New MySqlCommand(Query, MysqlConn)
command.Parameters.Add(New MySqlParameter("class", CType(CmbClass.SelectedItem.ToString, String)))
command.Parameters.Add(New MySqlParameter("term", CType(CmbTerm.SelectedItem.ToString, String)))
command.Parameters.Add(New MySqlParameter("amount", CType(TxtAmount.Text, String)))
我对 Vb 比较陌生,我想我一定是做错了什么 它可能是什么,我该如何解决?
这就是我将数据传递给组合框的方式
Private Sub Fees_settings_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim adapter As New MySqlDataAdapter()
Dim adapter1 As New MySqlDataAdapter
Dim ds As New DataSet()
Dim ds1 As New DataSet
Dim i As Integer = 0
MysqlConn = New MySqlConnection
MysqlConn.ConnectionString = "server='" & My.Settings.MServer & "';user='" & My.Settings.MDbUser & "';password='" & My.Settings.MDbPass & "';database='" & My.Settings.MDb & "'"
Dim sql As String = "SELECT name,label FROM classes "
Dim sql1 As String = "SELECT name,label FROM term"
Try
MysqlConn.Open()
command1 = New MySqlCommand(sql, MysqlConn)
command2 = New MySqlCommand(sql1, MysqlConn)
adapter.SelectCommand = command1
adapter1.SelectCommand = command2
adapter.Fill(ds)
adapter1.Fill(ds1)
adapter.Dispose()
adapter1.Dispose()
command1.Dispose()
command2.Dispose()
MysqlConn.Close()
CmbClass.DataSource = ds.Tables(0)
CmbClass.ValueMember = "label"
CmbClass.DisplayMember = "name"
CmbTerm.DataSource = ds1.Tables(0)
CmbTerm.ValueMember = "label"
CmbTerm.DisplayMember = "name"
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
【问题讨论】:
-
您没有显示或解释数据如何进入 CBO,但从错误来看,它似乎是数据绑定的。在这种情况下使用
SelectedValue。将“金额”存储为字符串可能是个坏主意 -
我已编辑添加
-
CmbClass 和 CmbTerm 是 ComboBox 对象吧?
-
是的,它们是组合框