【发布时间】:2025-11-28 03:40:01
【问题描述】:
我正在尝试使用 Visual Basic 2010 进行简单的输入/输出注册。
我创建了一个 SQL server 3.5 CE 数据库,并在其中创建了一个具有这种结构的表:
有Id有礼Identity = true
我在一个模块中也得到了这个
Dim Var_NombreDB As String = "OlgaDatabase.sdf"
Dim Var_ProveedorDB As String = "Microsoft.SQLSERVER.CE.OLEDB.3.5"
Public Conexion_DB As New OleDb.OleDbConnection("Provider=" & Var_ProveedorDB & ";Data Source=" & Var_NombreDB & ";")
Public SQL_string_conexion As String = ""
Public cmd_Command As New OleDb.OleDbCommand
Public Dr_DataReader As OleDb.OleDbDataReader
我正在正确打开数据库连接,并且可以毫无问题地看到 DataGridView 中的寄存器,但是当我尝试插入新寄存器时不起作用,我得到了 textBoxes (txt_)数据和填充后生成的CommandText查询是
INSERT INTO MOVIMIENTOS (Tipo, SubTipo, Descripcion, Monto, Saldo, Fecha)
VALUES ('1', '2', '3', 4, 24, GETDATE())
当我在查询语法检查器(在服务器资源管理器中)中尝试时,查询正常,如果我运行它,则会在表中添加一个包含预期数据的新行。
但是当我尝试在运行时添加新行时,即使它向我显示“ALL OK”MsgBox,我的表中也没有添加任何寄存器,这是我的插入按钮内的代码
cmd_Command.CommandType = CommandType.Text
cmd_Command.Connection = Conexion_DB
SQL_string_conexion = "INSERT INTO MOVIMIENTOS (Tipo, SubTipo, Descripcion, Monto, Saldo, Fecha) "
SQL_string_conexion += "VALUES ('" _
& txt_Tipo.Text & "', '" _
& txt_Subtipo.Text & "', '" _
& txt_Descripcion.Text & "', " _
& txt_Monto.Text & ", " _
& txt_Monto.Text + 20 & ", " _
& "GETDATE()" _
& ")"
cmd_Command.CommandText = SQL_string_conexion
Try
cmd_Command.ExecuteNonQuery()
MsgBox("All OK")
Catch ex As Exception
MsgBox(ex.ToString)
End Try
知道我做错了什么吗?我认为这与Id 列有关,但我不确定。
问候
【问题讨论】:
-
你为什么使用
OleDbConnection等?我建议使用正确的原生SqlCeConnection和SqlCeCommand -
只是因为我第一次使用 SQL Server,修改了用于 Access 数据库的代码。既然您指出了这一点,我尝试将每个
OleDb.OleDbConnection更改为SqlServerCe.SqlCeConnection等等,但现在我什至无法读取数据库。由于Public Conexion_DB As New SqlServerCe.SqlCeConnection("Provider=" & Var_ProveedorDB & ";Data Source=" & Var_NombreDB & ";"),我总是收到Dim adp As New SqlServerCe.SqlCeDataAdapter(SQLstr, Conexion_DB)的System.TypeInitializationException was unhandled HResult=-2146233036错误 -
好的,我删除了“Provider”选项并将连接保留为
Public Conexion_DB As New SqlServerCe.SqlCeConnection("Data Source=" & Var_NombreDB & ";"),现在它运行良好,甚至显示(在运行时)我添加的寄存器,但是当我回来时设计/编码数据库没有新的寄存器。
标签: sql vb.net visual-studio-2010 sql-server-ce