Database 如何根据数据的可用性从VB.Net将数据输入access

Database 如何根据数据的可用性从VB.Net将数据输入access,database,vb.net,ms-access,Database,Vb.net,Ms Access,如何根据数据的可用性从VB.Net将数据输入access 我正在编写一个将数据插入Access数据库的代码。我成功地做到了这一点,但也有一些例外,我不知道如何处理。所以请帮帮我 问题是我有11个文本框。所有这些都是强制性的,但有一个文本框(TextBox3)是可选的。我的意思是,有时候TextBox3中会有数据,有时候不会。基于Textbox3中数据的可用性,我应该能够更新我的access数据库 这是我的密码 Imports System.Data.OleDb Public Class Form

如何根据数据的可用性从VB.Net将数据输入access

我正在编写一个将数据插入Access数据库的代码。我成功地做到了这一点,但也有一些例外,我不知道如何处理。所以请帮帮我

问题是我有11个文本框。所有这些都是强制性的,但有一个文本框(TextBox3)是可选的。我的意思是,有时候TextBox3中会有数据,有时候不会。基于Textbox3中数据的可用性,我应该能够更新我的access数据库

这是我的密码

Imports System.Data.OleDb
Public Class Form1
    Dim provider As String
    Dim datafile As String
    Dim connString As String
    Dim myConnection As OleDbConnection = New OleDbConnection
    Dim str As String
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
        datafile = "D:\Database\sampletest.accdb"
        connString = provider & datafile
        myConnection.ConnectionString = connString
        myConnection.Open()
        Dim insrt0 As String
        insrt0 = "Insert into 01bkDetails([bk01],[bk02],[bk03],[bk04],[bk05],[bk06],[bk07],[bk08],[bk09],[bk10],[bk11]) Values (?,?,?,?,?,?,?,?,?,?,?)"
        Dim cmd1 As OleDbCommand = New OleDbCommand(insrt0, myConnection)
             cmd1.Parameters.Add(New OleDbParameter("bk01", CType(Textbox1.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk02", CType(Textbox2.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk03", CType(Textbox3.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk04", CType(Textbox4.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk05", CType(Textbox5.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk06", CType(Textbox6.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk07", CType(Textbox7.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk08", CType(Textbox8.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk09", CType(Textbox9.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk10", CType(Textbox10.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk11", CType(Textbox11.Text, String)))
        Try
            cmd1.ExecuteNonQuery()
            cmd1.Dispose()
            myConnection.Close()

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class
我知道检查文本框中是否有数据的代码是

If (Not String.IsNullOrWhiteSpace(Textbox3.Text)) Then

        End If
我知道这段代码应该在此时执行
cmd1.ExecuteNonQuery()

我的问题是我应该在“如果”和“如果结束”之间写什么。。。因为我希望只影响文本框3,而不影响其余的文本框

我还想知道Access数据库中是否可以有一个空字段,或者是否必须用一些数据填充它


谢谢。`

在将
Textbox3.Text
作为参数添加到命令对象之前,请检查其值:

Imports System.Data.OleDb
Public Class Form1
    Dim provider As String
    Dim datafile As String
    Dim connString As String
    Dim myConnection As OleDbConnection = New OleDbConnection
    Dim str As String
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
        datafile = "D:\Database\sampletest.accdb"
        connString = provider & datafile
        myConnection.ConnectionString = connString
        myConnection.Open()
        Dim insrt0 As String
        insrt0 = "Insert into 01bkDetails([bk01],[bk02],[bk03],[bk04],[bk05],[bk06],[bk07],[bk08],[bk09],[bk10],[bk11]) Values (?,?,?,?,?,?,?,?,?,?,?)"
        Dim cmd1 As OleDbCommand = New OleDbCommand(insrt0, myConnection)
             cmd1.Parameters.Add(New OleDbParameter("bk01", CType(Textbox1.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk02", CType(Textbox2.Text, String)))
             If (String.IsNullOrWhiteSpace(Textbox3.Text)) Then
                 cmd1.Parameters.Add(New OleDbParameter("bk03", CType(Textbox3.Text, String)))
             Else
                 ' Insert an empty String
                 cmd1.Parameters.Add(New OleDbParameter("bk03", ""))
             End If
             cmd1.Parameters.Add(New OleDbParameter("bk04", CType(Textbox4.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk05", CType(Textbox5.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk06", CType(Textbox6.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk07", CType(Textbox7.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk08", CType(Textbox8.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk09", CType(Textbox9.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk10", CType(Textbox10.Text, String)))
             cmd1.Parameters.Add(New OleDbParameter("bk11", CType(Textbox11.Text, String)))
        Try
            cmd1.ExecuteNonQuery()
            cmd1.Dispose()
            myConnection.Close()

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

OleDbParameter
构造函数无法接受
Null
字符串值。因此,如果是这样,请从非空字符串值、空字符串中构造
OleDbParameter
。。。谢谢你的解释兄弟,我不知道它不会接受空字符串值。。。顺便说一句,我知道这是一个离题的问题,但是。。。你是否知道,如果我手动输入某个链接,为什么在access的超链接字段中的链接开头和结尾都会出现#号???