2017-02-08 7 views
0

J'ai une propriété qui contient une ligne de jeu de données fortement typée. J'ai ajouté une procédure d'insertion et de mise à jour à mon ensemble de données. Si je passe l'adaptateur à une ligne qui existe déjà, les informations sont mises à jour avec succès. Toutefois, si je crée une nouvelle ligne, elle ne l'insère pas dans la table de base de données. L'exception n'est jamais levée et l'int retourné est toujours 0. Aucune nouvelle ligne n'a été ajoutée.La mise à jour de l'adaptateur de jeu de données fortement typé n'insère pas de nouvelle ligne

private MyDataset.MyDatasetGetDataRow _row; 

private MyDataset.MyDatasetGetDataRow Rowa 
{ 
    get { return _row; } 
    set { _row = value; } 
} 

public void NewOne() 
{  
    MyDatasetTableAdapters.MyDatasetGetDataTableAdapter adapter = new MyDatasetTableAdapters.MyDatasetGetDataTableAdapter(); 
    MyDataset.MyDatasetGetDataDataTable tbl = adapter.GetData(0, 0); 
    MyDataset.MyDatasetGetDataRow row = tbl.NewMyDatasetGetDataRow(); 
    Rowa = row;  
} 

public int Save() 
{ 
    try 
    { 
     int a = -99; 
     using (MyDatasetTableAdapters.MyDatasetGetDataTableAdapter adapter = new MyDatasetTableAdapters.MyDatasetGetDataTableAdapter()) 
     { 
      a = adapter.Update(tbl); 
     } 
     return a; 
    } 
    catch (Exception ex) 
    { 
     throw new Exception("Error: It didn't save. (" + ex.Message + ")"); 
    } 

}

+0

Le nouveau ne peut pas fonctionner. Pour qu'un adaptateur fonctionne, il a besoin d'une instruction SQL texte. Votre code n'a pas de SQL donc Rowa/row sera toujours vide. Donc, la lecture ne fonctionne pas, il est donc difficile de dire si vous avez écrit les données. – jdweng

+0

L'adaptateur est associé à une instruction SQL de sélection, de mise à jour et d'insertion via une connexion à la base de données et une procédure stockée. Comme je l'ai mentionné une mise à jour à une ligne existante fonctionne, mais un nouveau ne pas insérer. Rowa a des données et existe, il n'est pas nul et la mise à jour ne fait pas d'erreur, il renvoie simplement 0. –

+0

Quoi ??? Une connexion ne crée pas d'instructions SQL à moins que vous ne le fassiez dans votre code C# dans une méthode différente que vous n'avez pas publiée. – jdweng

Répondre

0

Row n'a pas appartenu à une table et donc l'ensemble de données ne savait pas que la ligne avait été récemment ajouté.