gpt4 book ai didi

vb.net - VB 2008 中的数据类型不匹配

转载 作者:行者123 更新时间:2023-12-04 05:48:41 24 4
gpt4 key购买 nike

大家好,我有一个问题。当我尝试在我的程序中使用这段代码将供应商添加到数据库时,我遇到了数据类型不匹配错误。据我所知,供应商的状态造成了错误。

我将如何存储名为 radActive 的单选按钮的值和 radInactive在数据库中?我应该使用 BooleanString ?我使用 Microsoft Access 作为我的数据库和字段 Status设置为 Yes/No .

这是代码。

Public Sub SupplierInsertData()

Dim conn As OleDb.OleDbConnection
Dim cmd As OleDb.OleDbCommand

Dim SupplierType As String
Dim Status As Boolean

'Check for supplier type
If frmDatabaseSupplier.radLocal.Checked = True Then

SupplierType = "Local"

ElseIf frmDatabaseSupplier.radForeign.Checked = True Then

SupplierType = "Foreign"

End If

'Check for supplier status
If frmDatabaseSupplier.radActive.Checked = True Then

Status = True

ElseIf frmDatabaseSupplier.radInactive.Checked = True Then

Status = False

End If

'For inserting of data in the database.
Dim cmdString As String = "INSERT INTO Supplier(SupplierLastName, SupplierFirstName, SupplierMiddleInitial, " & _
"SupplierCompany, SupplierType, SupplierStreetAddress, SupplierCity, SupplierContactNumber, SupplierEmail, " & _
"Status)" & _
"VALUES('" & frmDatabaseSupplier.txtSupplierLastName.Text & "','" & frmDatabaseSupplier.txtSupplierFirstName.Text & "','" & frmDatabaseSupplier.txtSupplierMiddleInitial.Text & "','" _
& frmDatabaseSupplier.txtSupplierCompany.Text & "','" & SupplierType & "', '" & frmDatabaseSupplier.txtSupplierStreetAddress.Text & "','" & frmDatabaseSupplier.txtSupplierCity.Text & "','" _
& frmDatabaseSupplier.txtSupplierContactNumber.Text & "','" & frmDatabaseSupplier.txtSupplierEmail.Text & "','" & Status & "')"

conn = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\ProjectAnalysisSystem.accdb")

cmd = New OleDb.OleDbCommand(cmdString, conn)

conn.Open()
cmd.ExecuteNonQuery()
conn.Close()

End Sub

谢谢!

最佳答案

尝试更改代码的最后一部分。
您应该使用参数将文本框或变量的值传递给数据库引擎。
并且不要忘记将像 OleDbConnection 这样的一次性对象封装在 using 中。陈述。

Dim cmdString As String = "INSERT INTO Supplier(SupplierLastName, SupplierFirstName, SupplierMiddleInitial, " & _ 
"SupplierCompany, SupplierType, SupplierStreetAddress, SupplierCity, SupplierContactNumber, SupplierEmail, " & _
"Status)" & _
"VALUES(@supplierName, @supplierFirst, @supplierMiddle, @supplierCo, @supplierType, @supplierStreet, @supplierCity, " & _
"@supplierContact, @supplierMail, @status)"
Using conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\ProjectAnalysisSystem.accdb")
Dim cmd As OleDbCommand = New OleDb.OleDbCommand(cmdString, conn))
cmd.Parameters.AddWithValue("@supplierName", frmDatabaseSupplier.txtSupplierLastName.Text)
cmd.Parameters.AddWithValue("@supplierFirst", frmDatabaseSupplier.txtSupplierFirstName.Text)
cmd.Parameters.AddWithValue("@supplierMiddle", frmDatabaseSupplier.txtSupplierMiddleInitial.Text)
cmd.Parameters.AddWithValue("@supplierCo", frmDatabaseSupplier.txtSupplierCompany.Text )
cmd.Parameters.AddWithValue("@supplierType", SupplierType)
cmd.Parameters.AddWithValue("@supplierStreet", frmDatabaseSupplier.txtSupplierStreetAddress.Text)
cmd.Parameters.AddWithValue("@supplierCity", frmDatabaseSupplier.txtSupplierCity.Text)
cmd.Parameters.AddWithValue("@supplierContact", frmDatabaseSupplier.txtSupplierContactNumber.Text)
cmd.Parameters.AddWithValue("@supplierMail", frmDatabaseSupplier.txtSupplierEmail.Text)
cmd.Parameters.AddWithValue("@status", Status) '<- Here the status var is correctly identified as a boolean, not as a string
conn.Open()
cmd.ExecuteNonQuery()
End Using

关于vb.net - VB 2008 中的数据类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com