Datenbankabfragen (.NET)

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen

Um Abfragen an eine Datenbank zu senden muss man vorher eine Verbindung zu der Datenbank aufbauen, war dies erfolgreich kann man der Verbindung arbeiten. Wenn mit der Verbindung zu arbeiten muss immer eine Command-Objekt erzeugt werden, welches dann auf die Datenbank ausgeführt wird. Anschließend wird in Abhängigkeit von der Art der Abfrage die passende Methode aufgerufen. Schickt man eine Abfrage ab wird ein DataReader zurückgegeben, welcher jedoch die Verbindung blockiert bis sie geschlossen wurde, daher sollte nach jeder Abfrage die Verbindung geschlossen werden. (Beispiel an C#)

SQL Server

Abfragen

Um eine Abfrage auszuführen muss ein SqlCommand erzeugt werden: <code=csharp> SqlCommand command = new SqlCommand("SELECT * FROM test;",con); </code=csharp> Alternativ kann man auch das Objekt anlegen und die Eigenschaften später setzen: <code=csharp> SqlCommand command = new SqlCommand(); command.CommandText = "SELECT * FROM test;"; command.Connection = con; </code=csharp> Nachdem man die Verbindung und die Abfrage gesetzt hat, muss man die Abfrage abschicken, dies geschied durch aufrufen der ExecuteReader Methode. Nach Abschicken dieser Methode wird ein SqlDataReader zurückgegeben welcher die Daten enthält. Durch diesen kann man mit mit der Read() Methode durchlaufen bis er keine Daten mehr enthält. Die methode Read gibt immer true oder false zurück, je nachdem ob es noch ein weiteres Ergebnis gibt. Auf die einzelnen Elemente kann man mit dem Index der Position in der Ergebnismenge oder mit dem Spaltennamen zugreifen. <code=csharp> SqlDataReader read = command.ExecuteReader(); while(read.Read())

 Console.WriteLine(read[0]+" "+read["id"]);

</code=csharp> Außer über die Möglichkeit mit dem Index bietet die Klasse fertige Methoden um an die Daten zu kommen, z.B. GetInt32, GetDouble.

Änderungen

Um Änderungen an den Daten einer Tabelle vorzunehmen werden die Befehle genauso wie die Abfragen gesetzt nur das sie nicht mit ExecuteReader ausgeführt werden sondern mit ExecuteNonQuery, dies gibt dann die betroffenen Zeilen zurück. <code=csharp> SqlCommand command = new SqlCommand("DELETE FROM test;",con); int rows = command.ExecuteNonQuery(); </code=csharp> Grundsätzlich werden alle Abfragen die keine Ergebnismenge zurückliefern mit der ExecuteNonQuery Methode ausgeführt.

Oracle

Abfragen

Um eine Abfrage auszuführen muss ein SqlCommand erzeugt werden: <code=csharp> OracleCommand command = new OracleCommand("SELECT * FROM test;",con); </code=csharp> Alternativ kann man auch das Objekt anlegen und die Eigenschaften später setzen: <code=csharp> OracleCommand command = new OracleCommand(); command.CommandText = "SELECT * FROM test;"; command.Connection = con; </code=csharp> Nachdem man die Verbindung und die Abfrage gesetzt hat, muss man die Abfrage abschicken, dies geschied durch aufrufen der ExecuteReader Methode. Nach Abschicken dieser Methode wird ein SqlDataReader zurückgegeben welcher die Daten enthält. Durch diesen kann man mit mit der Read() Methode durchlaufen bis er keine Daten mehr enthält. Die methode Read gibt immer true oder false zurück, je nachdem ob es noch ein weiteres Ergebnis gibt. Auf die einzelnen Elemente kann man mit dem Index der Position in der Ergebnismenge oder mit dem Spaltennamen zugreifen. <code=csharp> OracleDataReader read = command.ExecuteReader(); while(read.Read())

 Console.WriteLine(read[0]+" "+read["id"]);

</code=csharp>

Änderungen

Um Änderungen an den Daten einer Tabelle vorzunehmen werden die Befehle genauso wie die Abfragen gesetzt nur das sie nicht mit ExecuteReader ausgeführt werden sondern mit ExecuteNonQuery, dies gibt dann die betroffenen Zeilen zurück. <code=csharp> OracleCommand command = new OracleCommand("DELETE FROM test;",con); int rows = command.ExecuteNonQuery(); </code=csharp>

Postgres

Abfragen

Um eine Abfrage auszuführen muss ein SqlCommand erzeugt werden: <code=csharp> OracleCommand command = new OracleCommand("SELECT * FROM test;",con); </code=csharp> Alternativ kann man auch das Objekt anlegen und die Eigenschaften später setzen: <code=csharp> NpgsqlCommand command = new NpgsqlCommand(); command.CommandText = "SELECT * FROM test;"; command.Connection = con; </code=csharp> Nachdem man die Verbindung und die Abfrage gesetzt hat, muss man die Abfrage abschicken, dies geschied durch aufrufen der ExecuteReader Methode. Nach Abschicken dieser Methode wird ein SqlDataReader zurückgegeben welcher die Daten enthält. Durch diesen kann man mit mit der Read() Methode durchlaufen bis er keine Daten mehr enthält. Die methode Read gibt immer true oder false zurück, je nachdem ob es noch ein weiteres Ergebnis gibt. Auf die einzelnen Elemente kann man mit dem Index der Position in der Ergebnismenge oder mit dem Spaltennamen zugreifen. <code=csharp> NpgsqlDataReader read = command.ExecuteReader(); while(read.Read())

 Console.WriteLine(read[0]+" "+read["id"]);

</code=csharp>

Änderungen

Um Änderungen an den Daten einer Tabelle vorzunehmen werden die Befehle genauso wie die Abfragen gesetzt nur das sie nicht mit ExecuteReader ausgeführt werden sondern mit ExecuteNonQuery, dies gibt dann die betroffenen Zeilen zurück. <code=csharp> NpgsqlCommand command = new NpgsqlCommand("DELETE FROM test;",con); int rows = command.ExecuteNonQuery(); </code=csharp>