ho creato un'Application Windows che deve operare su un DB (creato sempre da me) composto da 2 tabelle:
CATEGORIA_ARTICOLI: 2 colonne (id, NomeCategoria)
ELENCO_ARTICOLI: 7 colonne
leggo i dati dalle 2 tabelle nel load del form e li inserisco in un dataSet:
codice:Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim connectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB\CatalogoArticoliIoProgrammo.mdf;Integrated Security=True;User Instance=True" Dim mySqlConnection As SqlConnection = New SqlConnection(connectionString) Try mySqlConnection.Open() myDataSet = New DataSet() Dim queryString1 As String = "SELECT * FROM CATEGORIA_ARTICOLI" Dim queryString2 As String = "SELECT * FROM ELENCO_ARTICOLI" Dim nameTable1 As String = "CATEGORIA_ARTICOLI" Dim nameTable2 As String = "ELENCO_ARTICOLI" Dim mySqlCommand As SqlCommand = mySqlConnection.CreateCommand() mySqlCommand.CommandText = queryString1 Dim mySqlDataAdapter As SqlDataAdapter = New SqlDataAdapter() mySqlDataAdapter.SelectCommand = mySqlCommand mySqlDataAdapter.Fill(myDataSet, nameTable1) ' Aggiungo alla DataTable CATEGORIA_ARTICOLI la voce "Tutte le categorie" in modo che ' tale voce possa essere visualizzata nel menù a tendina della ComBox. ' Questa voce ha id = 0, quindi è inesistente sul DB Dim newCustomersRow As DataRow = myDataSet.Tables("CATEGORIA_ARTICOLI").NewRow() newCustomersRow("id") = "0" newCustomersRow("NomeCategoria") = "Tutte le categorie" myDataSet.Tables("CATEGORIA_ARTICOLI").Rows.InsertAt(newCustomersRow, 0) ComboBox1.DataSource = myDataSet.Tables("CATEGORIA_ARTICOLI") ComboBox1.DisplayMember = "NomeCategoria" ComboBox1.ValueMember = "id" ComboBox1.SelectedValue = 0 mySqlCommand.CommandText = queryString2 mySqlDataAdapter.SelectCommand = mySqlCommand mySqlDataAdapter.Fill(myDataSet, nameTable2) DataGridView1.DataSource = myDataSet.Tables("ELENCO_ARTICOLI") DataGridView1.Columns(0).Visible = False DataGridView1.Columns(1).Visible = False DataGridView1.AllowUserToAddRows = False Catch ex As Exception Throw New Exception(ex.Message) Finally mySqlConnection.Close() mySqlConnection.Dispose() End Try End Sub
Quando vado ad inserire una nuova categoria da un TextBox vado ad aggiornare il DataSet e ad aggiungererla nella tabella CATEGORIA_ARTICOLI del DB.
Il problema è che il seguente codice non mi dò errore ma non inserisce un bel niente nel DB!![]()
![]()
Dove sbaglio?!codice:Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If Trim(TextBox1.Text) <> "" Then Dim newRow As DataRow = myDataSet.Tables("CATEGORIA_ARTICOLI").NewRow() newRow("id") = "-1" newRow("NomeCategoria") = Trim(TextBox1.Text) myDataSet.Tables("CATEGORIA_ARTICOLI").Rows.Add(newRow) Dim connectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB\CatalogoArticoliIoProgrammo.mdf;Integrated Security=True;User Instance=True" Dim mySqlConnection As SqlConnection = New SqlConnection(connectionString) Try mySqlConnection.Open() Dim insertQuery As String = "INSERT INTO CATEGORIA_ARTICOLI (NomeCategoria) VALUES (@NomeCategoria)" Dim cmd As New SqlCommand(insertQuery, mySqlConnection) Dim da As SqlDataAdapter = New SqlDataAdapter(cmd) da.InsertCommand = cmd da.InsertCommand.Connection = mySqlConnection Dim param As SqlParameter = New SqlParameter("@NomeCategoria", SqlDbType.NVarChar, 50, "NomeCategoria") da.InsertCommand.Parameters.Add(param) da.Update(myDataSet, "CATEGORIA_ARTICOLI") Catch ex As Exception Console.WriteLine("Error: " & ex.ToString) Finally mySqlConnection.Close() mySqlConnection.Dispose() End Try TextBox1.Text = Nothing TextBox1.Enabled = False Button2.Enabled = False End If End Sub![]()

Rispondi quotando