2010-07-29 4 views
0

J'essaie d'écrire dans une base de données, j'ai travaillé sur le following site. En particulier la fonction LoadARow.SQL CE 3.5 - Ecrire dans une base de données

Je reçois l'erreur d'exécution

"System.IndexOutOfRangeException: A SqlCeParameter avec 'Value' ParameterName n'est pas contenue par ce SqlCeParamaterCollection

L'erreur fait référence à la ligne." Commande. Parameters ["@ Value"]. Value = num; ". La base de données que j'utilise a une colonne Value définie comme clé, et une colonne de texte

using (SqlCeConnection connect = new SqlCeConnection("Data Source=C:\\Users\\mike\\Documents\\database.sdf")) 
{ 
    connect.Open(); 

    string text = "test"; 
    int num = 0; 

    using (SqlCeCommand command = new SqlCeCommand("insert into Data Table values (@Value, @Text)", connect)) 
    { 
    command.Parameters.Add("@Text", SqlDbType.NVarChar); 
    command.Parameters["@Value"].Value = num; 
    command.Parameters.AddWithValue("@Text", text); 
    command.ExecuteNonQuery(); 
    } 
} 

Répondre

2

Essayez:

using (SqlCeConnection connect = new SqlCeConnection("Data Source=C:\\Users\\mike\\Documents\\database.sdf")) 
    { 
     connect.Open(); 

     string text = "test"; 
     int num = 0; 

     using (SqlCeCommand command = new SqlCeCommand("insert into Data Table values (@Value, @Text)", connect)) 
     { 
      command.Parameters.Add("@Value", SqlDbType.NVarChar, num); 
      command.Parameters.Add("@Text", SqlDbType.NVarChar, text); 
      command.ExecuteNonQuery(); 
     } 
    } 
+0

Merci pour les réponses rapides. Les deux solutions ont pris soin de l'erreur, mais maintenant j'ai "System.Data.SqlServerCe.SqlCeException: Il y avait une erreur d'analyse de la requête. [Numéro de ligne de jeton = 1, décalage de ligne de jeton = 18]" à command.ExecuteNonQuery(); – Mike

+0

Quel est le nom de votre table? Votre requête devrait lire "insert into [nom_table] valeurs ...", donc je devine que votre nom de table est "Data_Table" et la requête devrait être "insérer dans les valeurs Data_Table ...". Veuillez également accepter la réponse que vous préférez, en cochant la case à gauche de la réponse. – WillfulWizard

+0

Le dernier problème a fini par être un problème de nommage, les noms de tables ne semblent pas pouvoir contenir d'espaces, donc le changement à Data_Table a fonctionné. Merci à tous ceux qui ont aidé. – Mike

1

La ligne:

command.Parameters.Add("@Text", SqlDbType.NVarChar); 

devrait lire:

command.Parameters.Add("@Value", SqlDbType.NVarChar); 

Vous n'êtes pas encore défini la variable à ce moment-là, ce qui explique pourquoi la ligne suivante errored sur index. Une faute de frappe, j'en suis sûr, puisque vous avez défini @Text la ligne après.

Questions connexes