2017-04-22 6 views
0

Ich versuche, überprüfte Elemente von einer checkedlistbox in meine SQL-Datenbank zu speichern, und ich fülle meine checkedlistbox aus der gleichen SQL-Datenbank, bisher kann ich den Text des überprüften Elements aus der checkedlistbox abrufen und in einer Zeichenfolge speichern dann habe ich ein Etikett verwendet, um anzuzeigen, wenn ich den Text des überprüften Elements bekomme oder nicht, und es funktioniert, aber wenn ich versuche, die überprüften Daten in die Datenbank einzufügen, bekomme ich einen Fehler "Verbindungseigenschaft wurde nicht initialisiert." auf ExecuteNonQuery() -Methode.wie eingecheckte Elemente von checkedlistbox in SQL-Datenbank einzufügen?

Imports System.Data 
Imports System.Data.SqlClient 
Public Class Form1 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     Dim da As New SqlDataAdapter 
     Dim dt As New DataTable 
     Dim connectionString As String = "Server=DESKTOP-V12PTAV ;Database=test ;User Id=sa ;Password=wills8877" 
     Using conn As New SqlConnection(connectionString) 
      conn.ConnectionString = connectionString 
      conn.Open() 
      Dim str As String 
      str = "Select sem1 From sem" 
      da = New SqlDataAdapter(str, conn) 
      dt = New DataTable 
      da.Fill(dt) 
      CheckedListBox1.DataSource = dt 
      CheckedListBox1.DisplayMember = "sem1" 
      conn.Close() 
     End Using 
    End Sub 


    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 
End Class 

This error

+1

MySQL? Bist du sicher? – Strawberry

+0

Nicht MySQL. Bitte verwenden Sie korrekte Tags. – Bugs

Antwort

0

Das Problem vielleicht aus Ihrer Abfragesyntax arised. Versuchen Sie folgendes:

sql = "insert into pretab(pre) values(@str)" 
cmd.Parameters.AddWithValue("@str", str)    
cmd.ExecuteNonQuery() 

OOPS .. Ich habe erkannt, dass Sie mit Ihrem Anschluss Befehl zuweisen vergessen. Versuchen Sie also, die folgende Anweisung hinzuzufügen:

cmd = New SqlCommand(sql, conn) 

vor der Ausführung Ihres Befehls. So sollte der endgültige Code wie folgt aussehen:

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

cmd = New SqlCommand(sql, conn) 

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

cmd.ExecuteNonQuery() 
+0

Derselbe Fehler, Sir. –

+0

Ich tat dies: - str = itemChecked.item ("sem1"). ToString Label1.Text = str sql = "Einfügen in Pretab (Pre) Werte (@str)" cmd.Parameters.AddWithValue ("@ str ", str) cmd.ExecuteNonQuery() –

+0

Entschuldigung, ich habe meine Antwort oben geändert. Bitte beziehen Sie sich darauf und kommen Sie mit Ihren Ergebnissen zurück. Prost –

0

Zunächst einmal würde ich Datenoperationen in einer Klasse, z. (Beachten Sie, dass ich mich auf Einsätze konzentriere). Sie müssen Server und Katalog auf Ihren Server und Katalog auf SQL-Server ändern.

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 

Formular Code

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 
0

Es scheint, dass Sie die Verbindung mit dem Befehl nicht vorsah. Der Code war Schaltfläche klicken

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 

Was Sie tun müssen, ist vor cmd.ExecuteNonQuery() Sie benötigen es, um eine Verbindung cmd.connection = connection

Dies entfernt die cmd.ExecuteNonQuery() Fehler .

Verwandte Themen