我正在尝试创建一个类来存储我的连接字符串以及插入,更新和删除的常规函数。
测试INSERT函数,它似乎完成了没有任何错误的过程,但是phisical DB没有新的注册表。
Imports System.Data.OleDb
Public Class ControlBD
' Connection string
Private ConBD As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" &
"Data Source=inventariosBD.accdb;")
' Data Set
Private ds As New DataSet
' Data Adapter
Private da As New OleDb.OleDbDataAdapter
' SQL queries
Public Sql As String
Public Sub cargarDS(tabla)
sql = "Select * from " & tabla
da = New OleDb.OleDbDataAdapter(sql, ConBD)
da.Fill(ds, tabla)
End Sub
Public Sub insertar(tabla As String, valores As Array)
' Command Builder
Dim cb As New OleDb.OleDbCommandBuilder()
Dim dsRegistro As DataRow = ds.Tables(tabla).NewRow()
For i = 0 To UBound(valores)
dsRegistro.Item(valores(i)(0)) = valores(i)(1)
Next
cb.DataAdapter = da
ds.Tables(tabla).Rows.Add(dsRegistro)
da.Update(ds, tabla)
End Sub
End Class
Public Class formPrincipal
Public ControlBD As New ControlBD
Private Sub formPrincipal_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim tabla As String = "productos"
Dim vals(4) As Array
ControlBD.cargarDS(tabla)
vals(0) = {"grupo", "mi_grupo'"}
vals(1) = {"nombre", "mi_nombre"}
vals(2) = {"medida", "mi_medida"}
vals(3) = {"cantidad", "50"}
vals(4) = {"precio", "80"}
ControlBD.insertar(tabla, vals)
End Sub
最后,当我在更新行放置断点时 da.Update(ds,tabla) VisualStudio显示以下内容:
ADO.NET:Ejecutar NonQuery“INSERT INTO productos(grupo,nombre,medida,cantidad,precio)VALUES(?,?,?,?,?)”。 Sejejeórtetexto de comando“INSERT INTO productos(grupo,nombre,medida,cantidad,precio)VALUES(?,?,?,?,?)” enlaconexión“Provider = Microsoft.ACE.OLEDB.12.0; Data Source = inventariosBD.accdb;”你不知道怎么样
因此查询有问号而不是我要插入的值,但VS调试器显示我的DataSet正确地具有新值。错误在哪里?
我在Visual Studio的Solutions Explorer中添加了DataBase,因此它自动将数据库添加到Bin / Debug文件夹中。
我从Visual Studio中检查数据库,但我意识到它显示的是原始数据库,而不是Bin / Folder中的数据库。
换句话说...... Visual Studio向我展示了另一个数据库而不是受我的代码影响的数据库。
所以我的代码INSERTS INTO数据库,但它取代了相同的注册表,它就像UPDATE而不是INSERT,即使输出查询如上所示INSERT INTO。
答案 0 :(得分:0)
我在Visual Studio的Solutions Explorer中添加了DataBase,因此它自动将数据库添加到Bin / Debug文件夹中。
我从Visual Studio中检查数据库,但我意识到它显示的是原始数据库,而不是Bin / Folder中的数据库。
换句话说...... Visual Studio向我展示了另一个数据库而不是受我的代码影响的数据库。