使用VB.NET写入MS-Access数据库问题

时间:2015-01-30 02:29:42

标签: database vb.net ms-access

我正在利用VB.Net尝试写入我创建的数据库(需要写入数据库的机器是数据库的所有者,因此不存在权限问题)。我在运行写入数据库的辅助设备时没有出错,但是在我的数据库中没有创建新记录。我已成功连接到数据库,因为我的返回记录完全可以正常工作。

用于写入数据库的Sub:

Public Sub LogThisCard(a As Object)
    Dim con As New OleDb.OleDbConnection
    Dim da As New OleDb.OleDbDataAdapter
    Dim sql As New OleDb.OleDbCommand
    Dim inMachine As String = "Yes"

    con.ConnectionString = Connection()
    con.Open()

    Try
        sql.Connection = con
        sql.CommandText = "INSERT INTO LogTable (MSA, Foo, Bar, Jack, Rabbit, Date_/_Time, Foxtrot) VALUES (@MSA, @Foo, @Bar, @Jack, @Rabbit, @DT, @Foxtrot)"

        sql.Parameters.AddWithValue("MSA", a.MSA)
        sql.Parameters.AddWithValue("Foo", a.Foo)
        sql.Parameters.AddWithValue("Bar", a.Bar)
        sql.Parameters.AddWithValue("Jack", a.Jack)
        sql.Parameters.AddWithValue("Rabbit", a.Rabbit)
        sql.Parameters.AddWithValue("DT", DateTime.Now())
        sql.Parameters.AddWithValue("Foxtrot", a.FoxTrot)

        da.InsertCommand = sql
        da.InsertCommand.ExecuteNonQuery()
    Catch ex As Exception
        Debug.Print(ex.ToString)
    End Try

    con.Close()
End Sub

数据库设计如下:

  • ID:自动编号(主键)
  • MSA:数字
  • Foo:数字
  • 酒吧:短文
  • 杰克:短文
  • 兔子:短文
  • 日期/时间:日期/时间
  • Foxtrot:短文

1 个答案:

答案 0 :(得分:0)

这可能是Access和您的DateTime参数的问题。如果DateTime允许空值,请更改插入以执行除DateTime之外的所有操作。如果插入工作,那么你知道问题。

我不确定为什么访问存在addwithvalue问题,但我经常看到它。我发现声明参数变量和设置属性更好,然后在日期时添加参数。

示例:

Dim cmd As OleDb.OleDbCommand
Dim param As New OleDb.OleDbParameter
param.Direction = ParameterDirection.Input
param.DbType = DbType.Date
param.Value = Date.Now

cmd.Parameters.Add(param)