Frage zu SQL - Einfügen von Daten

06/02/2008 - 21:29 von Brian Schmalisch | Report spam
Hallo,

kann man eine SQL Anweisung so formulieren, dass ein Insert nur dann
erfolgt, wenn der Datensatz noch nicht in der DB existiert.

Bisher mache ich es immer auf zwei Wegen:
object rueckgabe = 0;
connection.Open();
string sql1 = "SELECT COUNT(*) FROM player where Playername=\"" + value +
"\"";
string sql2 = "INSERT INTO player (Playername) VALUES (\'" + value + "\')";
MySqlCommand readCommand = new MySqlCommand(sql1, connection);
rueckgabe = readCommand.ExecuteScalar();
if ((Int64)rueckgabe == 0)
{
MySqlCommand insertCommand = new MySqlCommand(sql2, connection);
int i = insertCommand.ExecuteNonQuery();
}

Kann man diese Anweisung eventuell vereinfachen?

Brian
 

Lesen sie die antworten

#1 Jürgen Volke
07/02/2008 - 07:59 | Warnen spam
Hallo Brian


kann man eine SQL Anweisung so formulieren, dass ein Insert nur dann
erfolgt, wenn der Datensatz noch nicht in der DB existiert.

Bisher mache ich es immer auf zwei Wegen:
object rueckgabe = 0;
connection.Open();
string sql1 = "SELECT COUNT(*) FROM player where Playername=\"" + value +
"\"";
string sql2 = "INSERT INTO player (Playername) VALUES (\'" + value +
"\')";
MySqlCommand readCommand = new MySqlCommand(sql1, connection);
rueckgabe = readCommand.ExecuteScalar();
if ((Int64)rueckgabe == 0)
{
MySqlCommand insertCommand = new MySqlCommand(sql2, connection);
int i = insertCommand.ExecuteNonQuery();
}

Kann man diese Anweisung eventuell vereinfachen?




ich komme mit deiner Syntax hier nit klar - aber im Prinzip geht es so:

INSERT INTO tblPlayer (Feld1, ... Feldn)
SELECT Feld1, ... Feldn FROM
ImportTabelle I left join tblPlayer P
ON I... = P...
where P is Null

HTH Jürgen

Ähnliche fragen