2013-03-11 3 views
0

Je travaille sur mon premier programme de base de données et j'ai de la difficulté à mettre les données à jour dans la base de données d'accès. Voici le code pour le bouton 'ajouter des critères' sur le winform. Je sais qu'il me manque quelque chose ou que je me trompe, alors je vous demande conseil pour le gourou.Insérer des données dans la table oleDb

Répondre

1

Quelque chose ne va pas dans votre code.

Essayez avec cette

Dim TaxConnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _ 
          ConfigurationManager.AppSettings("Database") 
Using dbConnection = New OleDbConnection(TaxConnStr) 
    Dim dt As New DataTable 
    Dim da As New OleDbDataAdapter 
    Try 
     dbConnection.Open() 
     Dim cmd As New OleDbCommand 
     cmd.CommandText = "INSERT INTO UserCriteria (UserName, State, County, " & _ 
          "Type, Amount, Rank) VALUES " & _ 
          "(@UserName, @State, @County, @Type, @Amount, @Rank)" 
     cmd.Parameters.AddWithValue("@UserName", boxAssignTo.Text) 
     cmd.Parameters.AddWithValue("@State", boxState.Text) 
     cmd.Parameters.AddWithValue("@County", boxCounty.Text) 
     cmd.Parameters.AddWithValue("@Type", boxType.Text) 
     cmd.Parameters.AddWithValue("@Amount", boxAmount.Text) 
     cmd.Parameters.AddWithValue("@Rank", boxRank.Text) 
     cmd.ExecuteNonQuery() 
    Catch ex As Exception 
    Finally 
     dbConnection.Close() 
    End Try 
End Using 

Comme vous pouvez le voir ajouter un enregistrement dans une table de base de données que vous utilisez un OleDbCommand avec un texte de commande et définir ses paramètres aux valeurs attendues dans la table de base de données.
Il y a aussi le problème du type de données de vos colonnes. De votre exemple, il n'est pas possible d'inférer le type de données, mais probablement Type, Rank et Amount sont des colonnes numériques et vous devez donc convertir la valeur de la zone de texte en un nombre approprié (Convert.ToInt32 (textbox.text))

0

Il semble que vous y combiniez deux concepts/objets. Vous pouvez insérer les enregistrements en utilisant simplement OleDbCommand:

Dim cmd As New OleDbCommand 
cmd.CommandText = "INSERT INTO UserCriteria (UserName, State, County, Type, Amount, Rank) VALUES (@UserName, @State, @County, @Type, @Amount, @Rank)" 
cmd.Parameters.Add(new OleDbParameter("@UserName", DbType.String)) 
cmd.Parameters.Add(new OleDbParameter("@State", DbType.String)) 
cmd.Parameters.Add(new OleDbParameter("@County", DbType.String)) 
cmd.Parameters.Add(new OleDbParameter("@Type", DbType.String))  ' DbType depends on column type in database 
cmd.Parameters.Add(new OleDbParameter("@Amount", DbType.Integer)) ' DbType depends on column type in database 
cmd.Parameters.Add(new OleDbParameter("@Rank", DbType.Integer))  ' DbType depends on column type in database 

cmd.Prepare(); 

cmd.Parameters("@UserName").Value = boxAssignTo.Text 
cmd.Parameters("@State").Value = boxState.Text 
cmd.Parameters("@County").Value = boxCounty.Text 
cmd.Parameters("@Type").Value = boxType.Text 
cmd.Parameters("@Amount").Value = boxAmount.Text 
cmd.Parameters("@Rank").Value = boxRank.Text 

cmd.ExecuteNonQuery() 
Questions connexes