VB.Net插入DateTimePicker到MS Access数据库

问题描述:

好日子给大家在这里在*!我有一个简单的问题,也许你们可以帮助我。我创建了一个将DateTimePicker插入MS Access数据库的原型。我遵循这个指南: date time conversion problem when inserting data into sql database虽然它帮助人问这个问题,但它根本没有帮助我:(VB.Net插入DateTimePicker到MS Access数据库

这是图片,这是我的代码,这只是一个简单的原型,如果解决了,我将能够落实到我和我的同学们工作的实际系统。

Inserting datetimepicker

有一个语法错误明显,但如果我只删除的DateTimePicker码我可以插入我的姓不任何问题,并将其显示在MS Access中。这些是代码。

Imports System.Data.OleDb 
Public Class Form1 
    Dim conString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Israel De Leon\Documents\dateinsert.accdb;" 
    Dim con As OleDbConnection = New OleDbConnection(conString) 
    Dim cmd As OleDbCommand 
    Dim adapter As OleDbDataAdapter 
    Dim dt As DataTable = New DataTable() 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     ListView1.View = View.Details 
     ListView1.FullRowSelect = True 

     ListView1.Columns.Add("Last Name", 100) 
     ListView1.Columns.Add("Date", 100) 
    End Sub 

    Public Sub add() 
     Dim SQL As String = "INSERT INTO Table1(LastName, Time) VALUES (@LastName, @Time)" 
     cmd = New OleDbCommand(SQL, con) 

     cmd.Parameters.AddWithValue("@LastName", TextBox1.Text) 
     cmd.Parameters.AddWithValue("@Time", DateTime.Parse(DateTimePicker1.Value)) 

     'OPEN CONNECTION AND INSERT 
     Try 
      con.Open() 

      If cmd.ExecuteNonQuery() > 0 Then 
       MsgBox("Succesfully Inserted") 

      End If 

      con.Close() 


     Catch ex As Exception 
      MsgBox(ex.Message) 
      con.Close() 
     End Try 
    End Sub 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     add() 
    End Sub 
End Class 

请帮助这个队友。谢谢:D

问题是列时间的名称。时间是MS-Access中的保留字。你需要把周围那名

Dim SQL As String = "INSERT INTO Table1(LastName, [Time]) VALUES (@LastName, @Time)" 

我也强烈建议你not use AddWithValue,但更精确的添加在这里你可以正确设置了参数的数据类型,避免AddWithValue隐藏的代码转换您的输入方括号到预期的

cmd.Parameters.Add("@LastName", OleDbType.VarWChar, 100).Value = TextBox1.Text 
cmd.Parameters.Add("@Time", OleDbType.DateTime).Value =DateTimePicker1.Value 

请注意,Add方法允许您在文本情况下也定义数据的大小。这允许数据库引擎优化插入查询。 (不知道这也正好与访问,但肯定与SQL Server,这是一个重要的优化)

+0

哇,这固定它。谢谢你的回答,史蒂夫 –

最好使用monthCalendar控制:

textBox1.Text = monthCalendar1.SelectionRange.Start.Date.ToShortDateString() 
cmd.Parameters.AddWithValue("@Time", textBox1.Text)