DataAdapter will nicht updaten

23/08/2007 - 21:34 von Frank Huster | Report spam
Hallo,

ich habe folgendes Problem, dass ich erst einmal schildern möchte.
Es geht immer noch um meine Webservice. Wer die Posts verfolgt hat, weiß ja,
was ich meine :-D
Ich nehme also mein XmlDocument entgegen, werte dieses aus und schreibe die
für mich relevanten Sachen in eine Datatable. Kurz vorweg, ich habe die Werte
der DataTable in eine SQL Table (vereinfacht mit den Spalten a,b,c,d,e)
einzutragen. Davon interessiert mich aus meiner XML aber nur die Spalte d und
a, weil diese meinen Schlüssel enthàlt, den ich als Attribut in der XML
mitbekomme. Ich habe mir nun eine DataTable erzeugt, die nur die Spalten a
und d hat. Diese wollte ich nun mit einem Update Command updaten. Er làuft
auch ohne Fehler durch. Nur updatet er nichts. Das verwundert mich irgendwie.
Muss ich die Datatable immer mit der kompletten Row der SQL Table
instanziieren oder hàngts hier wo anders?
Schreibrechte hab ich jetzt auf die DB. Das hab ich gestern Nacht 4 Uhr zu
meiner Freude noch hinbekommen. Freu mich wie immer auf eure Antworten :-)

Gruß
Frank
 

Lesen sie die antworten

#1 Frank Huster
23/08/2007 - 21:40 | Warnen spam
Hier mal noch etwas Code, der euch wahrscheinlich eher weiter hilft:

DataTable standbyTimeDataTable = new DataTable();
standbyTimeDataTable.Columns.Add("id", typeof(Int32));
standbyTimeDataTable.Columns.Add("errorMsg", typeof(String));
DataRow newRow = standbyTimeDataTable.NewRow();

Boolean error = false;
while(xmlReader.Read()) {
if(xmlReader.NodeType == XmlNodeType.Element) {
if(xmlReader.LocalName == "CTWS_ReturnCode" && Convert.ToInt32
(xmlReader.ReadString()) != 0) {
error = true;
errorString = "Error in StandbyTimeResponseXML ";
} else if(error == true) {
if(xmlReader.LocalName == "CTWS_ReturnMsg") {
errorString += xmlReader.ReadString() + "";
} else if(xmlReader.LocalName == "standby") {
errorString += ". The Standbytime with the ID "
+ xmlReader.GetAttribute("extID") + " couldn't
transfer.";
newRow = standbyTimeDataTable.NewRow();
newRow["id"] = Convert.ToInt32(xmlReader.GetAttribute("extID"));
} else if(xmlReader.LocalName == "errorMsg") {
string msg = xmlReader.ReadString();
errorString += msg;
Core.Logger.logErrorMessage(errorString);
errorString = "Error in StandbyTimeResponseXML ";
newRow["errorMsg"] = msg;
standbyTimeDataTable.Rows.Add(newRow);
}
}
}
}
try {
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();
String commandString = "UPDATE StandbyTime SET errorMsg = @errorMsg
WHERE id = @id";
SqlCommand updateCommand = new SqlCommand(commandString, sqlConnection);

updateCommand.Parameters.Add("@id", SqlDbType.Int, 0, "id");
updateCommand.Parameters.Add("@errorMsg", SqlDbType.NVarChar, 0,
"errorMsg");

sqlDataAdapter.InsertCommand = updateCommand;
sqlDataAdapter.Update(standbyTimeDataTable);
} catch(Exception ex) {
Core.Logger.logErrorMessage(ex.Message);
}

Ähnliche fragen