我试图将一些数据插入到访问数据库中,但有一些条件。通过选中 2个文本框来输入数据,然后只插入访问数据库。
如需了解更多信息,请查看我的代码..
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\samplech.accdb"
connString = provider & datafile
myConnection.ConnectionString = connString
myConnection.Open()
Dim chinsrt1 As String
chinsrt1 = "Insert into bkCharacters([bkch01],[bkch02],[bkch03],[bkCh04]) Values (?,?,?,?)"
Dim chcmd1 As OleDbCommand = New OleDbCommand(chinsrt1, myConnection)
If (String.IsNullOrWhiteSpace(CH1.Text)) Then
If (String.IsNullOrWhiteSpace(CHDP1.Text)) Then
chcmd1.Parameters.Add(New OleDbParameter("bk01", CType(bkNmbr.Text, String)))
chcmd1.Parameters.Add(New OleDbParameter("bk02", CType(CH1.Text, String)))
chcmd1.Parameters.Add(New OleDbParameter("bk03", CType(CHDP1.Text, String)))
chcmd1.Parameters.Add(New OleDbParameter("bk04", CType(CHSource.Text, String)))
Else
' Insert an empty String
chcmd1.Parameters.Add(New OleDbParameter("bk01", ""))
chcmd1.Parameters.Add(New OleDbParameter("bk02", ""))
chcmd1.Parameters.Add(New OleDbParameter("bk03", ""))
chcmd1.Parameters.Add(New OleDbParameter("bk04", ""))
End If
End If
Dim chinsrt2 As String
chinsrt2 = "Insert into bkCharacters([bkch01],[bkch02],[bkch03],[bkCh04]) Values (?,?,?,?)"
Dim chcmd2 As OleDbCommand = New OleDbCommand(chinsrt2, myConnection)
If (String.IsNullOrWhiteSpace(CH2.Text)) Then
If (String.IsNullOrWhiteSpace(CHDP2.Text)) Then
chcmd2.Parameters.Add(New OleDbParameter("bk01", CType(bkNmbr.Text, String)))
chcmd2.Parameters.Add(New OleDbParameter("bk02", CType(CH2.Text, String)))
chcmd2.Parameters.Add(New OleDbParameter("bk03", CType(CHDP2.Text, String)))
chcmd2.Parameters.Add(New OleDbParameter("bk04", CType(CHSource.Text, String)))
Else
' Insert an empty String
chcmd2.Parameters.Add(New OleDbParameter("bk01", ""))
chcmd2.Parameters.Add(New OleDbParameter("bk02", ""))
chcmd2.Parameters.Add(New OleDbParameter("bk03", ""))
chcmd2.Parameters.Add(New OleDbParameter("bk04", ""))
End If
End If
Try
chcmd1.ExecuteNonQuery()
chcmd2.ExecuteNonQuery()
chcmd1.Dispose()
chcmd2.Dispose()
myConnection.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
我在这里尝试做的是检查CH1.Text和CHDP1.Text的值,如果其中一个文本框中有一些数据,我希望另一个字段可以访问是空的。
但如果两个数据都只是相应插入......
在这两种情况下,我还想包括bkNmbr.Text和ChSource.Text。
如果两个文本框(CH1和CHDP1)中都没有数据,我根本不想更新数据(不更新记录)
请帮帮我们,我被困在这里。
谢谢。
答案 0 :(得分:1)
检查一个字段是否为空,然后插入,如果两个字段都不执行任何操作。
If (Not String.IsNullOrWhiteSpace(CH1.Text)) OR (Not String.IsNullOrWhiteSpace(CHDP1.Text)) Then 'check if at least one field is not empty
Dim checkNullCH1 as String
Dim checkNullCHDP1 as String
If String.IsNullOrWhiteSpace(CH1.Text) then 'check if field is empty
checkNullCH1 = ""
else
checkNullCH1 = CH1.Text
end if
If String.IsNullOrWhiteSpace(CHPD1.Text) then
checkNullCHPD1 = ""
else
checkNullCHPD1 = CHPD1.Text
end if
chcmd1.Parameters.Add(New OleDbParameter("bk01", CType(bkNmbr.Text, String)))
chcmd1.Parameters.Add(New OleDbParameter("bk02", CType(checkNullCH1, String)))
chcmd1.Parameters.Add(New OleDbParameter("bk03", CType(checkNullCHPD1, String)))
chcmd1.Parameters.Add(New OleDbParameter("bk04", CType(CHSource.Text, String)))
chcmd1.ExecuteNonQuery()
end if
替代你可以检查两者是否都是空的。
If not ((String.IsNullOrWhiteSpace(CH1.Text)) AND (String.IsNullOrWhiteSpace(CHDP1.Text))) Then
这等于另一个。