Vb.net 将复选框项保存到数据库访问
我有vb.net的申请表。 它包含ID、年龄、名称作为文本框和TC作为复选框。 我对这些项目有以下代码,但复选框项目无论是否选中都会自动保存。 那怎么办呢Vb.net 将复选框项保存到数据库访问,vb.net,ado.net,Vb.net,Ado.net,我有vb.net的申请表。 它包含ID、年龄、名称作为文本框和TC作为复选框。 我对这些项目有以下代码,但复选框项目无论是否选中都会自动保存。 那怎么办呢 [Imports System.Data.OleDb Imports System.Data Public Class Form1 Dim con As New OleDbConnection Dim cmd As New OleDbCommand Dim con_str As String = "Provider=M
[Imports System.Data.OleDb
Imports System.Data
Public Class Form1
Dim con As New OleDbConnection
Dim cmd As New OleDbCommand
Dim con_str As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Satyam\Documents\Database2.accdb"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
con.ConnectionString = con_str
con.Open()
'MsgBox(con.State)
Dim myReader As OleDbDataReader
cmd = New OleDbCommand("select * from Table1", con)
myReader = cmd.ExecuteReader
While myReader.Read()
End While
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Sub
Private Sub AddTable1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddTable1.Click
Try
con.ConnectionString = con_str
con.Open()
'MsgBox(con.State)
cmd = New OleDbCommand("insert into Table1(ID,Age,Name,TC) values ('" & IDtxt.Text & "','" & Agetxt.Text & "','" & Nametxt.Text & "','" & TCtxt.Text & "')", con)
cmd.ExecuteNonQuery()
MsgBox("Added Successfuly")
Dim myReader As OleDbDataReader
cmd = New OleDbCommand("select * from Table1", con)
myReader = cmd.ExecuteReader
Agetxt.Clear()
While myReader.Read()
End While
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Sub
末级检查此代码。这是用于3个复选框的。您可以将其扩展为10个复选框。 请看这里:
Dim hbStr As String
Dim bgStr As String
Dim tcStr As String
If hb.Checked Then
hbStr = hb.Text
Else
hbStr = ""
End If
If bg.Checked Then
bgStr = bg.Text
Else
bgStr = ""
End If
If tc.Checked Then
tcStr = tc.Text
Else
tcStr = ""
End If
Dim cmd As New OleDbCommand
Dim conn As New OleDbConnection("Connection String")
conn.Open()
cmd.Connection = conn
cmd.CommandType = CommandType.Text
cmd.CommandText = "insert into Table1(ID,Age,Name,TC,HB.BG) values ('" & IDtxt.Text & "','" & Agetxt.Text & "','" & Nametxt.Text & "','" & tcStr & "','" & hbStr & "','" & bgStr & "')"
cmd.ExecuteNonQuery()
希望这对您有所帮助。很抱歉,它只保存TC而不保存Hb。
If Hbtxt.Checked Then
cmd = New OleDbCommand("insert into Table1(ID,Age,Hb) values ('" & IDtxt.Text & "','" & Agetxt.Text & "','" & Hbtxt.Text & "')", con)
Else
cmd = New OleDbCommand("insert into Table1(ID,Age,Hb,) values ('" & IDtxt.Text & "','" & Agetxt.Text & "','')", con)
End If
If TCtxt.Checked Then
cmd = New OleDbCommand("insert into Table1(ID,Age,TC) values ('" & IDtxt.Text & "','" & Agetxt.Text & "','" & TCtxt.Text & "')", con)
Else
cmd = New OleDbCommand("insert into Table1(ID,Age,TC) values ('" & IDtxt.Text & "','" & Agetxt.Text & "','')", con)
End If
始终使用参数以避免SQL注入。这样连接sql字符串会给您带来麻烦。还有一件事-如果不选中任何复选框,那么数据库中的相应列可能为空。如果希望它为空,请以这种方式传递该值
cmd=New-OleDbCommand(“插入到表1(ID、年龄、名称、TC)值(‘“&IDtxt.Text&“,‘“&AGETTXT.Text&“,‘“&Nametxt.Text&“,”,‘)”,con)”只需在单引号中传递空字符串
只需确保数据库中的字段不为非空
。如果有帮助,请标记答案。:)在这种情况下,如果有三个复选框作为TC、HB、BG-那么代码是什么?那么您是指您选择的要插入的值的复选框?或者每个复选框都有不同的字段。每个复选框都有不同的字段。我尝试了此代码,但得到了一个查询-Dim con As New OleDbConnection(“连接字符串”)-初始化字符串的格式不符合从索引0开始的规范。(未处理Argumentexception)