| Autor |
Nachricht |
ichichich
Unregistrierter
|
ichichich Unregistrierter
03:29:08 13.05.2012 Titel: |
Programm überspringt code |
Zitieren |
Guten Morgen,
mein Ziel ist es einen SQL Code an ne SQL datenbank zu schicken und dadurch mit INNER JOIN den Inhalt einer anderen Tabelle über die ID zu holen (Aufbau siehe unten).
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | System.Data.OleDb.OleDbDataReader r = null;
string sql = "SELECT `BuildOrder.index`, `BuildOrder.steps`, `BuildOrder.InternalBuildName`, `BuildOrder.InternalVillageId`, `Villages.vilname` FROM `BuildOrder` INNER JOIN `Villages` ON `BuildOrder.InternalVillageId` = `Villages.ID` ORDER BY `BuildOrder.index`";
Global.connection.Close();
Global.connection.Open();
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(sql, Global.connection);
r = cmd.ExecuteReader();
if (r.HasRows)
{
MessageBox.Show("ja");
}
else
{
MessageBox.Show("nein");
} | |
Das Problem ist nur, dass mein Programm nach "r = cmd.ExecuteReader();" einfach stoppt und den Restlichen Teil der Funktion (if|else) einfach überspringt.
Wenn ich die Anfrage ändere in "SELECT * FROM Villages" dann geht er über die Abfrage.
Weiß einer, wiso der ganze Code ausgelassen wird?
Aufbau meiner Datenbanken:
BuildOrder
ID index steps InternalBuildName InternalVillageId
1 3 2 smith 90531
Villages
ID vilname
90531 LALALALA |
|
|
|
 |
EXDW
Mitglied
Benutzerprofil
Anmeldungsdatum: 09.08.2005
Beiträge: 4732
|
EXDW Mitglied
08:42:32 13.05.2012 Titel: |
|
Zitieren |
Ist das Statement überhaupt gültig?
mach aus dem ` mal ein normales ' |
|
|
|
 |
ichichich
Unregistrierter
|
ichichich Unregistrierter
10:24:33 13.05.2012 Titel: |
|
Zitieren |
Ja man kann die Tabellennamen mit einem ` umschließen.
(habs jetzt trotzdem mal mit ' probiert, aber klappen tuts nicht besser) |
|
|
|
 |
Th69
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.03.2008
Beiträge: 2607
|
Th69 Mitglied
10:25:29 13.05.2012 Titel: |
|
Zitieren |
Stichwort: Exception (fangen) |
|
|
|
 |
ichichich
Unregistrierter
|
ichichich Unregistrierter
11:51:32 13.05.2012 Titel: |
|
Zitieren |
Wird nicht angeschlagen.
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | string sql = "SELECT `BuildOrder.index`, `BuildOrder.steps`, `BuildOrder.InternalBuildName`, `BuildOrder.InternalVillageId`, `Villages.vilname` FROM `BuildOrder` INNER JOIN `Villages` ON `BuildOrder.InternalVillageId` = `Villages.ID` ORDER BY `BuildOrder.index`";
//sql = "SELECT * FROM Villages";
Global.connection.Close();
Global.connection.Open();
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(sql, Global.connection);
try
{
r = cmd.ExecuteReader();
}
catch (InvalidOperationException e)
{
MessageBox.Show(e.Message);
} | |
Wenn ich mit Einzelschritte Debugge dann überspringt er einfach den kompletten folgenden Code. |
|
|
|
 |
KPC
Mitglied
Benutzerprofil
Anmeldungsdatum: 16.03.2002
Beiträge: 955
|
KPC Mitglied
12:19:24 13.05.2012 Titel: |
|
Zitieren |
Hallo,
probier doch einerseits mal was passiert wenn du statt einer InvalidOperationException eine Exception fängst. Andererseits ist die Frage was für eine Datenbank du im Hintergrund ansprichst, der MS SQL Server benutzt z.B. meines Wissens nach nicht ` um Tabellen zu escapen, sondern []. Ausserdem darfst du nicht wie folgt escapen: `BuildOrder.index`, sondern mit `BuildOrder`.`index`.
mfG KaPtainCugel |
|
|
|
 |
ichichich
Unregistrierter
|
ichichich Unregistrierter
13:30:50 13.05.2012 Titel: |
|
Zitieren |
| KPC schrieb: | Ausserdem darfst du nicht wie folgt escapen: `BuildOrder.index`, sondern mit `BuildOrder`.`index`.
mfG KaPtainCugel |
Danke das war das Problem. |
|
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|