c# & MySQL-Prepared: Fatal Error

OP #3508358
Lesenswert?

Hi,

ich bastel mir gerade eine Anwendung die die externe 
MySQL-XBMC-Datenbank auslesen soll. Derzeit experimentiere ich noch rum. 
Dieser Code funktioniert einwandfrei:
1
        public ArrayList GetMovieView2()
2
        {
3
            string command = @"Select `idMovie`,`idFile` FROM `xbmc_video75`.`movieview`;";
4
            MySqlCommand sqlCommand = connection.CreateCommand();
5
            sqlCommand.CommandText = command;
6
            MySqlDataReader Reader;
7
            connection.Open();
8
            Reader = sqlCommand.ExecuteReader();
9
            ArrayList Rückgabe = new ArrayList();
10
            int ordinalIdMovie = Reader.GetOrdinal("idMovie");
11
            int ordinalIdFile = Reader.GetOrdinal("idFile");
12

13
            while (Reader.Read())
14
            {
15
                Rückgabe.Add("IDMovie: " + Reader[ordinalIdMovie] + " IDFile: " + Reader[ordinalIdFile]);
16
            }
17
            connection.Close();
18
            return Rückgabe;
19
        }

Das ganze wollte ich jetzt auf Prepared-Commands umbauen, und bekomme 
damit Probleme. Hier mal der Code:
1
        public ArrayList GetMovieView3()
2
        {
3
            MySqlCommand cmd = connection.CreateCommand();
4
            cmd.Connection.Open();
5
            cmd.CommandText = "Select ?MovieID,?FileID FROM ?DataTable.?DataView;";
6
            cmd.Prepare();
7

8
            cmd.Parameters.AddWithValue("?MovieID", "idMovie");
9
            cmd.Parameters.AddWithValue("?FileID", "idFile");
10
            cmd.Parameters.AddWithValue("?DataTable", "xbmc_video75");
11
            cmd.Parameters.AddWithValue("?DataView", "movieview");
12

13
            cmd.Prepare();
14

15
            MySqlDataReader Reader;
16
            Reader = cmd.ExecuteReader();
17
            ArrayList Rückgabe = new ArrayList();
18
            int ordinalIdMovie = Reader.GetOrdinal("idMovie");
19
            int ordinalIdFile = Reader.GetOrdinal("idFile");
20

21
            while (Reader.Read())
22
            {
23
                Rückgabe.Add("IDMovie: " + Reader[ordinalIdMovie] + " IDFile: " + Reader[ordinalIdFile]);
24
            }
25
            connection.Close();
26
            return Rückgabe;
27
        }

Und zwar schmeißt mir Visual Studio für die Zeile "Reader = 
cmd.ExecuteReader();" folgenden aussagekräftigen Fehler:

"Ein Ausnahmefehler des Typs "MySql.Data.MySqlClient.MySqlException" ist 
in MySql.Data.dll aufgetreten.
Zusätzliche Informationen: Fatal error encountered during command 
execution."

Ich habe jetzt natürlich schon gegoogelt und bin da hauptsächlich auf 
das Problem gestoßen, dass die Beispiele alle zum Einfügen von Daten in 
die DB sind, ich will aber Daten abfragen. Auch kamen dann anfragen für 
ganz komplizierte Befehle.

Vielleicht kann mir ja wer von euch auf die Sprünge helfen.

Danke auf jeden Fall schonmal fürs "zu Gemühte führen" meines Codes ;-)

VG
Matthias
Gast #3508374
Lesenswert?

Matthias S. schrieb:
> Vielleicht kann mir ja wer von euch auf die Sprünge helfen.

Meines Wissens werden nur echte Parameter und keine Spaltennamen 
unterstützt. Es macht auch wenig sinn die Spaltennamen dynamisch zu 
machen. Sinn ist doch das der SQL-Server das gleiche Statement für 
verschiede Daten nutzen kann.

Auch werden Spaltennamen nicht als String übergeben.

MySqlCommand cmd = connection.CreateCommand();
cmd.Connection.Open();
cmd.CommandText = "Select MovieID, FileID FROM DataTable.DataView where 
MovieID = @ID;";
cmd.Parameters.AddWithValue("@ID", 5);
MySqlDataReader Reader;
Reader = cmd.ExecuteReader();

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren