sql - 无法将 vb.net 项目与 Access 号进行比较

标签 sql .net database vb.net ms-access

编辑:对于遇到此问题的任何人,不要错过有关仅使用的提示 参数,而不是将值直接插入到 SQL 查询中。


我的 vb.net 项目遇到了一个大问题,我坚持了一个星期

我有一个组合框项目,我需要将它与 Access 号进行比较,这是我的数据库以检索一些信息,但我只是收到一个错误,无论我将我的组合框项目转换成什么格式,它都说我的数据类型不兼容用表达式

这是我的代码中的一个 SQL 查询:

Dim dt1 As New DataTable 

'This query select some itens from a row that match with the selected combobox number  

Dim find1 As New OleDb.OleDbDataAdapter("SELECT Product, Number," _ 
& " Customer, Quantity, ProductionDate, AskDay, Pack, Company FROM RegOPE" _ 
& " WHERE Number ='" & CInt(mycombobox.SelectedItem) & "'", cn)

'Ive tried SelectedItem, Item, Text, SelectedValue...  
'For conversion i tried parse, tryparse, conversion...  

cn.Open() 'Opens database connection  
find1.Fill(dt1)  <- I got the error here  
cn.Close() 'Close database connect  
mydatagrid.DataSource = dt1 'Show the result in datagridview  

最佳答案

数字标准应该没有引号

Dim find1 As New OleDb.OleDbDataAdapter("SELECT Product, Number, " _
                                      & "Customer, Quantity, ProductionDate, AskDay, Pack, Company FROM RegOPE " _
                                      & "WHERE Number =" & CInt(mycombobox.SelectedItem), cn)

但最好始终使用参数:

Dim comm = New OleDb.OleDbCommand("SELECT Product, Number, " _
                                      & "Customer, Quantity, ProductionDate, AskDay, Pack, Company FROM RegOPE " _
                                      & "WHERE Number =?", cn)

comm.Parameters.AddWithValue("unusedName", mycombobox.SelectedItem)

Dim find1 As New OleDb.OleDbDataAdapter(comm)

关于sql - 无法将 vb.net 项目与 Access 号进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21023767/

相关文章:

PHP插入mysql问题

mysql - 如何根据另一个表中的值设置一个表的字段

python - 如何去掉将科学记数法转换为精确值所产生的 json 字符串中的引号

c# - 在 C# 程序中存储查询的正确方法是什么?

.net - 用于 .NET WinForms 的优质免费 Gridview

database - 企业解决方案的架构

database - 如何中断与数据库的连接以进行测试?

python 访问 mysql 数据库无法加载库

c# - 在 .NET 中使用数据库

c# - “System.Data.Entity.Core.EntityCommandExecutionException”出现在 mscorlib.dll 中,但未在用户代码中处理