Laden...

DataAdapter SQL Befehle auslesen

Erstellt von MuhammedC# vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.156 Views
M
MuhammedC# Themenstarter:in
222 Beiträge seit 2005
vor 16 Jahren
DataAdapter SQL Befehle auslesen

verwendetes Datenbanksystem: <Adaptive Anywhere SQL / Sybase 9.0>

Hallo,

ich habe mal eine Frage zum DataAdapter:

Ich habe folgendes Szenario ich gebe einem DataAdapter ein DataSet indem genau eine Table enthalten ist, weiter gebe ich ihm ein Select Befehl mit dem das DataSet gefüllt worden ist. Nun ist der CommandBuilder im Stande mir SQL Befehle für Insert / Update und Delete zu erstellen.
Dies klappt soweit ganz gut, nur wird trotzdem ein Fehler in den SQL´s generiert.

Jetzt meine Frage kann ich mir auch die fertigen SQL´s anschauen, also nicht mit Fragezeichen sondern schon direkt mit gefüllten Werten? Ich bin dankbar für eure Hilfe. Hier mal ein Codeschnippsel wie es im Prinzip läuft:



using (DbConnection connection = dataFactory.CreateConnection())
                    {
                        connection.ConnectionString = connectionString;
                        connection.Open();
                        DbDataAdapter adap = dataFactory.CreateDataAdapter();
                        DbCommand command = dataFactory.CreateCommand();
                        DbCommandBuilder build = dataFactory.CreateCommandBuilder();
                        build.DataAdapter = adap;
                        command.CommandText = selectCommand;
                        command.Connection = connection;
                        adap.SelectCommand = command;
                        if (logger.IsDebugEnabled)
                        {
                            logger.DebugFormat("DBUpdateDataSetFromSelectCommand() InsertCommand : {0}", build.GetInsertCommand().CommandText);
                            logger.DebugFormat("DBUpdateDataSetFromSelectCommand() UpdateCommand : {0}", build.GetUpdateCommand().CommandText);
                            logger.DebugFormat("DBUpdateDataSetFromSelectCommand() DeleteCommand : {0}", build.GetDeleteCommand().CommandText);
                        }
                        try
                        {
                            int i = adap.Update(dataset);
                            if (logger != null)
                                if(logger.IsDebugEnabled)logger.Debug(string.Format("DBUpdateDataSet was succesfully performed on the database and affected {0} rows", i));
                            return i;
...


Die oben beschriebenen Logins geben mir nur die mit Fragezeichen ausgestatten Befehle wieder.

thanks in advance

LG MC#

F
10.010 Beiträge seit 2004
vor 16 Jahren

Was anderes wirst du auch nicht bekommen.

Der DataAdapter such sich für jede zu ändernde datarow den jeweiligen
COmmand, bestückt dann erst die Parameter mit den werten, und schickt
das dann zur db.

Und wenn du mit Parametern arbeitest, kann es schon mal nicht an den erten liegen.

Ich tippe bei dieser art von Fehlermeldung eher auf Reservierte Wörter.

M
MuhammedC# Themenstarter:in
222 Beiträge seit 2005
vor 16 Jahren

Hallo

erstmal danke für den Beistand. Ich habe das Problem ein wenig weiter eingegrenzt.

Meine Spalten in der Tabelle hießen vorher 0:00, 0:15, 0:30 etc. (Bitte keine Bemerkungen über Normalisierungen etc.. 🙂). Dann kommt der Fehler Error near '0'

Anschließen habe ich sie in 000, 015, 030 etc. umbenannt, dann kam Error near 000.

Wenn ich sie jetzt aber abc def etc nenne ist alles im Lack und es funktioniert. Gibt es irgendwo eine Vorschrift dass Spaltennamen nicht aus Zahlen bestehen dürfen ?

LG MC#

F
10.010 Beiträge seit 2004
vor 16 Jahren

na klar.

Du hättest sie aber auch maskieren können.
Bei MSSQL wäre das [0:0].

[flame on]
Auch wenn du es nicht hören willst, zeigt die Namensgebung deutlich,
das der Designer übers knie gelegt gehört.

So ein design hat nichts mit SW-Entwicklen zu tun, das ist frickelei.
[flame off]

M
MuhammedC# Themenstarter:in
222 Beiträge seit 2005
vor 16 Jahren

Hehe werds bestimmt weiterleiten 😉.

Leider haben Best Practices nicht immer viel mit dem Lehrbuch zu tun. Und ich kenn leider Datenbanken von denen ich Alpträume bekomme und die trotzdem jahrelang stabil und vor allem performant laufen.

Besten Dank auf jeden Fall für die Anteilnahme und ich wünsche hoffentlich hoch normalisierte Datenbanken. 😁

LG MC#