【发布时间】:2012-04-28 21:58:53
【问题描述】:
大家好,我有一个问题。当我尝试在我的程序中使用这段将供应商添加到数据库中的代码时,我遇到了数据类型不匹配错误。据我所知,供应商的状态造成了错误。
如何将名为radActive 和radInactive 的单选按钮的值存储在数据库中?我应该使用Boolean 还是String?我使用 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
谢谢!
【问题讨论】:
-
您不应该尝试解决类型不匹配错误。您应该解决SQL injection 问题。只要您使用parametrized statements,类型不匹配错误就会自行解决。
-
但我认为目前安全性还不是问题。我仍然首先专注于功能。我会在创建信息系统时尝试研究这些东西。谢谢你的提示。 :)
标签: vb.net visual-studio-2008 ms-access ado.net oledb