Ist es möglich zu parametrisieren Tabellen-und Spaltennamen in SQLite-Abfragen?

Im Versuch, führen Sie eine parametrisierte Abfrage in SQLite C# -, und die Methode im mit ist entlang der Linien, um ein statisches Befehl mit

        SQLiteCommand cmd = new SQLiteCommand(
        "SELECT [ID]" +
            ",[email]" +
            ",[serializedata]" +
            ",[restrictions]" +
        " FROM " + UserTable +
        " WHERE @search = @searchparam", SQLConnection);

        cmd.Parameters.Add(new SQLiteParameter("@searchparam"));
        cmd.Parameters.Add(new SQLiteParameter("@search"));

und nannte es so:

        Command.Parameters["@searchparam"].Value = searchdata;
        Command.Parameters["@search"].Value = search;
        SQLiteDataAdapter slda = new SQLiteDataAdapter(UserSelectUsernameCommand);
        DataSet ds = new DataSet();
        slda.Fill(ds);
        User[] array = new User[ds.Tables[0].Rows.Count];
        int index = 0;
        foreach (DataRow row in ds.Tables[0].Rows)
        {
            array[index] = new User(this, row);
            index++;
        }
        return array;

aber im erhalte eine Fehlermeldung, die entlang der Linie von " '@suchen' ist nicht die richtige Spalte "name" oder so ähnlich. wenn ich eine Konstante verwenden, die Spalte name, und nur die Daten für den Parameter funktioniert es, aber ich möchte nicht 10 verschiedene Befehle für wenn ich brauche, um Suche durch unterschiedliche Spaltennamen.

Was ist hier das Problem?

  • Wenn Sie sind zu vermeiden, erstellen von 10 verschiedenen Kommandos, wegen der Ineffizienz der Bindung jeweils einer SqliteConnection und Aufbau Ihrer Parameter und CommandText über und über, ich bin nur so sicher, dass die Leser wissen, dass es eine alternative gibt. SqliteCommand hat einen parameterlosen Konstruktor nur neue SqliteCommand(); und die Connection-Eigenschaft zuweisbare zur Laufzeit. So können Sie erstellen und initialisieren Sie viele Befehle einfach mal aus und weisen Sie dann Ihre Verbindung-Eigenschaft auf eine SqliteConnection Objekt, das wiederholt erstellt und entsorgt werden zur Laufzeit.
InformationsquelleAutor caesay | 2010-11-10
Schreibe einen Kommentar