C# Tabellenname als Variable möglich? MySQL

Deletemaster

Erfahrenes Mitglied
Hallo zusammen,
ich "bastele" mir gerade eine Inverssuche für ein etwas größeres Telefonbuch.
Im Formular trägt der User die vorwahl und die Telefonnummer ein.

In der DB sind aus Performancegründen 9 Tabellen von vorwahl01 - vorwahl09 angelegt.
wenn der user nun die vorwahl 040 eingibt soll in der Query die Tabelle vorwahl04 ausgewählt werden

Code:
string str_Such_Vorwahl = txt_Such_Vorwahl.Text;

if (str_Such_Vorwahl == "04%")
{
	str_Such_Vorwahl = "04%";
	try
	{
	cmd.CommandText =
	"SELECT anrede, vorname, nachname, strasse, plz, ort, vorwahl, telefon FROM vorwahl04" +
	" WHERE vorwahl = '" + str_Such_Vorwahl + "' AND telefon = '" + str_Such_Rufnummer + "'";
	conn.Open();
	cmd.ExecuteNonQuery();

	OdbcDataReader reader = cmd.ExecuteReader();
	while (reader.Read())
	{
	ddl_Anrede.SelectedValue = reader["anrede"].ToString();
	txt_Vorname.Text = reader["vorname"].ToString();
	txt_Nachname.Text = reader["nachname"].ToString();
	txt_Strasse.Text = reader["strasse"].ToString();
	txt_PLZ.Text = reader["plz"].ToString();
	txt_Ort.Text = reader["ort"].ToString();
	txt_Vorwahl.Text = reader["vorwahl"].ToString();
	txt_Telefon.Text = reader["telefon"].ToString();
	}
	reader.Close();
	conn.Close();
	txt_Such_Vorwahl.Text = "";
	txt_Such_Rufnummer.Text = "";
	}
	catch (Exception ex)
	{
	lbl_Fehler.Text = ex.Message.ToString();
}

Nun hatte ich versucht:
Code:
string str_tabelle = "";
if (str_Such_Vorwahl == "01%")
{
str_Such_Vorwahl = "01%";
str_tabelle = vorwahl01;

else if (str_Such_Vorwahl == "02%")
str_Such_Vorwahl = "02%";

usw.

Leider klappt das nicht so, habt ihr eine Idee wie ich das realisieren kann?

Danke für Eure Hilfe
 
Hi

Dein Vorhaben funktioniert schon. Jedenfalls ist der Ansatz richtig.
Du solltest nur nicht SQL und C# mischen.
Mach den Vergleich mit der Methode String.StartsWith(). Diese liefert dir True/False zurück, wenn eine Zeichenfolge mit den entsprechenden Zeichen beginnt oder nicht.
 
Hallo niggo,
ja es funktioniert so, aber ich dachte ich könnte den Tabellennamen als Variable der Query übergeben, damit würde ich mir einige Zeilen ersparen:

in etwa:

Code:
if (str_Such_Vorwahl == "01%";
str_Such_Vorwahl = "01%";
str_tabelle = "vorwahl01";

if (str_Such_Vorwahl == "02%";
str_Such_Vorwahl = "02%";
str_tabelle = "vorwahl02";

SELECT * FROM ' " + str_tabelle + " ' WHERE WHERE vorwahl = '" + str_Such_Vorwahl + "' AND telefon = '" + str_Such_Rufnummer + "'";

Gibt es dafür eine Möglichkeit also als Tabellenvariable?

Danke für Deine Hilfe
 
Natürlich kannst du dein Query manuell aufbauen und dann wie in deinem Ansatz zu erkennen, den Tabellennamen über eine Variable übergeben. Du hast nur noch ein paar Syntaxfehler in deinem Query.

Folgendermaßen würde es syntaktisch stimmen:
Code:
SELECT * FROM " + str_tabelle + " WHERE vorwahl = '" + str_Such_Vorwahl + "' AND telefon = '" + str_Such_Rufnummer + "'";

Ich habe ein WHERE und die Hochkommas um den Tabellenamen entfernt. Falls die Datenbankfelder vorwahl und telefon numerisch sind sollten auch dort die Hochkommas weg.
 
Hi

Wenn es funktioniert, versteh ich dein Problem noch nicht! Was willst du denn nun mit deiner Frage bezwecken? Wo sollen wir dir helfen? :confused:
 

Neue Beiträge

Zurück