Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将选中项从checkedlistbox插入SQL数据库?_Sql_Vb.net - Fatal编程技术网

如何将选中项从checkedlistbox插入SQL数据库?

如何将选中项从checkedlistbox插入SQL数据库?,sql,vb.net,Sql,Vb.net,我正在尝试将选中的项目从checkedlistbox保存到我的SQL数据库,并从同一SQL数据库填充我的checkedlistbox,到目前为止,我能够从checkedlistbox中获取选中项的文本,并将其保存为字符串,然后使用标签显示是否获取选中项的文本及其工作情况,但当我尝试在数据库中插入选中数据时,ExecuteOnQuery()方法上出现错误“Connection property尚未初始化” 导入系统数据 导入System.Data.SqlClient 公开课表格1 私有子表单1_L

我正在尝试将选中的项目从checkedlistbox保存到我的SQL数据库,并从同一SQL数据库填充我的checkedlistbox,到目前为止,我能够从checkedlistbox中获取选中项的文本,并将其保存为字符串,然后使用标签显示是否获取选中项的文本及其工作情况,但当我尝试在数据库中插入选中数据时,ExecuteOnQuery()方法上出现错误“Connection property尚未初始化”

导入系统数据 导入System.Data.SqlClient 公开课表格1 私有子表单1_Load(发送方作为对象,e作为事件参数)处理MyBase.Load Dim da作为新的SqlDataAdapter Dim dt作为新数据表 Dim connectionString As String=“服务器=桌面-V12PTAV;数据库=测试;用户Id=sa;密码=wills8877” 将conn用作新的SqlConnection(connectionString) conn.ConnectionString=连接字符串 康涅狄格州公开赛 作为字符串的Dim str str=“从sem中选择sem1” da=新的SqlDataAdapter(str,conn) dt=新数据表 da.填充(dt) CheckedListBox1.DataSource=dt CheckedListBox1.DisplayMember=“sem1” 康涅狄格州关闭 终端使用 端接头 私有子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击 作为字符串的Dim str Dim cmd作为新的SqlCommand 将sql设置为字符串 Dim connectionString As String=“服务器=桌面-V12PTAV;数据库=测试;用户Id=sa;密码=wills8877” 将conn用作新的SqlConnection(connectionString) 康涅狄格州公开赛 检查为对象的项目 对于在CheckedListBox1.CheckedItems中签入的每个项目 str=itemChecked.item(“sem1”).ToString Label1.Text=str sql=“插入到pretab(pre)值(“+str+”)” cmd.ExecuteNonQuery() 下一个 康涅狄格州关闭 终端使用 端接头 末级

问题可能是由您的查询语法引起的。试试这个:

sql = "insert into pretab(pre) values(@str)"
cmd.Parameters.AddWithValue("@str", str)            
cmd.ExecuteNonQuery()
哎呀。。我刚意识到你忘了用连接分配你的命令。因此,请尝试添加以下语句:

cmd = New SqlCommand(sql, conn)
在执行命令之前。最后的代码应该是这样的:

sql = "insert into pretab(pre) values(@str)"

cmd = New SqlCommand(sql, conn)

cmd.Parameters.AddWithValue("@str", str) 

cmd.ExecuteNonQuery()

问题可能是由查询语法引起的。试试这个:

sql = "insert into pretab(pre) values(@str)"
cmd.Parameters.AddWithValue("@str", str)            
cmd.ExecuteNonQuery()
哎呀。。我刚意识到你忘了用连接分配你的命令。因此,请尝试添加以下语句:

cmd = New SqlCommand(sql, conn)
在执行命令之前。最后的代码应该是这样的:

sql = "insert into pretab(pre) values(@str)"

cmd = New SqlCommand(sql, conn)

cmd.Parameters.AddWithValue("@str", str) 

cmd.ExecuteNonQuery()

首先,我会在一个类中进行数据操作,例如(注意,我关注的是插入)。您需要将服务器和目录更改为SQL server上的服务器和目录

Imports System.Data.SqlClient
Public Class Operations
    Private Server As String = "KARENS-PC"
    Private Catalog As String = "CheckedListBoxDatabase"
    Private ConnectionString As String = ""
    Public Sub New()
        ConnectionString = $"Data Source={Server};Initial Catalog={Catalog};Integrated Security=True"
    End Sub
    Public Function Read() As DataTable
        ' read rows for checked listbox here
    End Function
    Public Sub Insert(ByVal sender As List(Of String))
        Using cn As SqlConnection = New SqlConnection With {.ConnectionString = ConnectionString}
            Using cmd As SqlCommand = New SqlCommand With {.Connection = cn, .CommandText = "insert into pretab(pre) values (@pre)"}
                cmd.Parameters.Add(New SqlParameter With {.ParameterName = "@pre", .SqlDbType = SqlDbType.NVarChar})
                cn.Open()
                For Each item In sender
                    cmd.Parameters("@pre").Value = item
                    cmd.ExecuteNonQuery()
                Next
            End Using
        End Using
    End Sub
End Class
表格代码

Public Class Form1
    Private ops As New Operations
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim Result = CheckedListBox1.Items.OfType(Of String).Where(Function(item, index) CheckedListBox1.GetItemChecked(index)).ToList
        ops.Insert(Result)
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        CheckedListBox1.DataSource = ops.Read
        CheckedListBox1.DisplayMember = "sem1"
    End Sub
End Class

首先,我会在一个类中进行数据操作,例如(注意,我关注的是插入)。您需要将服务器和目录更改为SQL server上的服务器和目录

Imports System.Data.SqlClient
Public Class Operations
    Private Server As String = "KARENS-PC"
    Private Catalog As String = "CheckedListBoxDatabase"
    Private ConnectionString As String = ""
    Public Sub New()
        ConnectionString = $"Data Source={Server};Initial Catalog={Catalog};Integrated Security=True"
    End Sub
    Public Function Read() As DataTable
        ' read rows for checked listbox here
    End Function
    Public Sub Insert(ByVal sender As List(Of String))
        Using cn As SqlConnection = New SqlConnection With {.ConnectionString = ConnectionString}
            Using cmd As SqlCommand = New SqlCommand With {.Connection = cn, .CommandText = "insert into pretab(pre) values (@pre)"}
                cmd.Parameters.Add(New SqlParameter With {.ParameterName = "@pre", .SqlDbType = SqlDbType.NVarChar})
                cn.Open()
                For Each item In sender
                    cmd.Parameters("@pre").Value = item
                    cmd.ExecuteNonQuery()
                Next
            End Using
        End Using
    End Sub
End Class
表格代码

Public Class Form1
    Private ops As New Operations
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim Result = CheckedListBox1.Items.OfType(Of String).Where(Function(item, index) CheckedListBox1.GetItemChecked(index)).ToList
        ops.Insert(Result)
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        CheckedListBox1.DataSource = ops.Read
        CheckedListBox1.DisplayMember = "sem1"
    End Sub
End Class

您似乎没有提供与该命令的连接。你的代码是点击按钮

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

    Dim str As String
    Dim cmd As New SqlCommand
    Dim sql As String
    Dim connectionString As String = "Server=DESKTOP-V12PTAV ;Database=test ;User Id=sa ;Password=wills8877"
    Using conn As New SqlConnection(connectionString)
        conn.Open()
        Dim itemChecked As Object
        For Each itemChecked In CheckedListBox1.CheckedItems
            str = itemChecked.item("sem1").ToString
            Label1.Text = str
            sql = "insert into pretab(pre) values('" + str + "')"
            cmd.ExecuteNonQuery()
        Next
        conn.Close()

    End Using

End Sub
您需要做的是在
cmd.ExecuteNonQuery()
之前为它提供一个连接
cmd.connection=connectionString


这将删除
cmd.ExecuteNonQuery()
错误。

您似乎没有提供与该命令的连接。你的代码是点击按钮

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

    Dim str As String
    Dim cmd As New SqlCommand
    Dim sql As String
    Dim connectionString As String = "Server=DESKTOP-V12PTAV ;Database=test ;User Id=sa ;Password=wills8877"
    Using conn As New SqlConnection(connectionString)
        conn.Open()
        Dim itemChecked As Object
        For Each itemChecked In CheckedListBox1.CheckedItems
            str = itemChecked.item("sem1").ToString
            Label1.Text = str
            sql = "insert into pretab(pre) values('" + str + "')"
            cmd.ExecuteNonQuery()
        Next
        conn.Close()

    End Using

End Sub
您需要做的是在
cmd.ExecuteNonQuery()
之前为它提供一个连接
cmd.connection=connectionString


这将删除
cmd.ExecuteNonQuery()
错误。

我这样做了:-str=itemChecked.item(“sem1”).ToString Label1.Text=str sql=“insert into pretab(pre)values(@str)”cmd.Parameters.AddWithValue(@str),str)cmd.ExecuteNonQuery()对不起,我修改了上面的答案。请参考它,并带回您的发现。Cheerri这样做了:-str=itemChecked.item(“sem1”).ToString Label1.Text=str sql=“插入pretab(pre)值(@str)”cmd.Parameters.AddWithValue(@str”,str)cmd.ExecuteNonQuery(),对不起,我修改了上面的答案。请参考它,并带回您的发现。干杯?你确定吗?不是。请使用正确的tags.MySQL?你确定吗?不是。请使用正确的标签。