2016-06-24 2 views
0

que je fais exactement ce (voir Using SqlDataAdapter to insert a row), mais il ne me donne pas la méthode .ADDImpossible d'ajouter une ligne à l'aide de SQL et CommandBuilder C#

Voici mon code:

var sqlQuery = "select * from CT_DETIMP where 0 = 1"; 
SqlDataAdapter tableAdapter = new SqlDataAdapter(sqlQuery, myConnection); 
DataSet dataSet = new DataSet(); 
tableAdapter.Fill(dataSet); 

var impRow = dataSet.Tables["CT_DETIMP"].NewRow(); 
impRow["TRANSCD"] = tranCode; 
impRow["MISC"] = misc; 
impRow["ADDENDA"] = addenda; 

dataSet.Tables["CT_DETIMP"].Add(impRow); // THIS IS WHERE THE ERROR IS 

new SqlCommandBuilder(tableAdapter); 
tableAdapter.Update(dataSet); 

I obtenir l'erreur DataTable ne contient pas de référence pour ADD. Je serais heureux de le faire d'une autre façon, mais je ne peux pas utiliser table.Adapter.Insert parce que j'ai besoin de mes données pour aller dans des champs spécifiques.


J'ai donc modifié dataSet.Tables ["CT_DETIMP"]. Add (impRow); to dataSet.Tables ["CT_DETIMP"]. Rows.Add (impRow); et maintenant j'obtiens une erreur nulle sur cette ligne: var impRow = dataSet.Tables ["CT_DETIMP"]. NewRow();


Ce code a fonctionné:

'SqlConnection myConnection = new SqlConnection (connectionString); myConnection.Open();

 var sqlQuery = "select * from CT_detimp where 0 = 1"; 
     SqlDataAdapter tableAdapter = new SqlDataAdapter(sqlQuery, myConnection); 

     SqlCommandBuilder cb = new SqlCommandBuilder(tableAdapter); 

     DataSet dataSet = new DataSet("CT_DETIMP"); 
     tableAdapter.Fill(dataSet,"CT_DETIMP"); 

     DataTable detailTable = dataSet.Tables["CT_DETIMP"]; 
     DataRow impRow = detailTable.NewRow();' 
+0

http://stackoverflow.com/questions/13138615/sqldataadapter -does-not-fill-dataset – MethodMan

+0

Assez sûr que c'est .Rows.Add – Paparazzi

+0

aussi DataTable est le sous-jacent de DataSet par exemple 'dataSet.Tables [0] .Rows.Add' – MethodMan

Répondre

1

Modifier la ligne avec l'erreur à ceci:

dataSet.Tables["CT_DETIMP"].Rows.Add(impRow); 
+0

Yay !!!! Ça a marché!! Merci beaucoup!!! – Missy

+0

Oh non. Maintenant, je reçois une erreur null sur 'var impRow = dataSet.Tables ["CT_DETIMP"]. NewRow();' Une idée? – Missy

1

Vous devez ajouter à la collection DataTable.Rows

dataSet.Tables["CT_DETIMP"].Rows.Add(impRow); 
+0

C'était tout - merci! – Missy