Problem mit SQLCe 2008 und Insert-Command

11/03/2010 - 18:29 von Klaus Mayer | Report spam
Hi,
ich versuche beispielsweise mit

sb->Append("INSERT INTO PERSON(NAME,LASTNAME) SELECT @name, @lname WHERE NOT
EXISTS (SELECT * FROM PERSON WHERE NAME= @name AND LASTNAME= @lname)");
SqlCeCommand ^cmd = gcnew SqlCeCommand(sb->ToString());
cmd->Parameters->Add("@name",nam);
cmd->Parameters->Add("@lname",lnam);

Werte, wenn nicht vorhanden, in eine Tabelle zu schreiben.
Leider schmiert mir der Query ab, weil die Parameter nach dem SELECT
offenbar nicht
akzeptiert werden (gebe ich sie dort direkt an, klappt alles).
Was mache ich falsch??

Thx 4 Help,
Klaus
 

Lesen sie die antworten

#1 Elmar Boye
11/03/2010 - 19:47 | Warnen spam
Hallo Klaus,

"Klaus Mayer" schrieb ...
ich versuche beispielsweise mit



Na denn, machen wir hier weiter ;-)

sb->Append("INSERT INTO PERSON(NAME,LASTNAME) SELECT @name, @lname WHERE NOT EXISTS (SELECT * FROM PERSON WHERE NAME= @name AND
LASTNAME= @lname)");
SqlCeCommand ^cmd = gcnew SqlCeCommand(sb->ToString());
cmd->Parameters->Add("@name",nam);
cmd->Parameters->Add("@lname",lnam);

Werte, wenn nicht vorhanden, in eine Tabelle zu schreiben.



Das sollte funktionieren, wenn alles zusammenpasst.
Ein etwas modifzierter Code aus einem àlteren Beitrag mit
dem bewußten EXISTS (in C++ mußt Du es selbst umschreiben):

public static void InsertWithExists()
{
using (SqlCeConnection connection = new SqlCeConnection(
@"Data Source=F:\Newsgroup\SqlCe35.sdf;"))
{
connection.Open();

try
{
SqlCeCommand insertCommand = new SqlCeCommand(
"INSERT INTO Person (Name, LastName) "
+ "SELECT @Name, @LastName WHERE NOT EXISTS("
+ "SELECT * FROM Person WHERE Name=@Name AND LastName=@LastName);",
connection);
SqlCeParameter nameParameter = insertCommand.Parameters
.Add("@Name", SqlDbType.NVarChar, 40);
SqlCeParameter lastNameParameter = insertCommand.Parameters
.Add("@LastName", SqlDbType.NVarChar, 40);

nameParameter.Value = "Klaus";
lastNameParameter.Value = "Mayer";
insertCommand.ExecuteNonQuery();

SqlCeCommand identityCommand = new SqlCeCommand(
"SELECT @@IDENTITY AS id;",
connection);
Console.WriteLine("New ID: {0}", identityCommand.ExecuteScalar());
insertCommand.ExecuteNonQuery();

SqlCeCommand selectCommand = new SqlCeCommand(
"SELECT TOP(10) id, Name, LastName FROM Person;",
connection);

using (SqlCeDataReader reader = selectCommand.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine("{0}: {1}, {2}",
reader.GetInt32(0),
reader.GetString(1),
reader.GetString(2));
}
reader.Close();
}
}
catch (SqlCeException exception)
{
Console.WriteLine("Exception: {0}", exception.Message);
}
}
}

und der Vollstàndigkeit habel das DDL dazu:

CREATE TABLE Person(
id int IDENTITY(1, 1) NOT NULL,
Name nvarchar(40) NOT NULL,
LastName nvarchar(40) NOT NULL,
CONSTRAINT PK_Person PRIMARY KEY (id));

Gruß Elmar

Ähnliche fragen