Parameter in INSERT Anweisung

28/09/2008 - 18:24 von AndreasU | Report spam
Ich möchte auf einen SQL-Server2005 eine INSERT Anweisung mit Parametern
ausführen. Ich bekomme dabei immer einen Fehler und weiß nicht woran es
liegt(ich nutze ASP.NET und C# 2005). Das googln brachte leider auch nichts.

Wenn ich die INSERT Anweisung
"INSERT INTO users (id,Pizzaria, Anmeldung, TYP) VALUES
(Param1,Param2,Param3,Param4)"
ausführe, bekomme ich folgende Fehlermeldung:
Der Name 'Param1' ist in diesem Kontext nicht zulàssig. Nur Konstanten,
Ausdrücke und Variablen sind hier zulàssig. Spaltennamen sind nicht zulàssig.


Wenn ich
"INSERT INTO users (id,Pizzaria, Anmeldung, TYP) VALUES ('Param1'
,'Param2','Param3','Param4')"
ausführe, erhalte ich diese Fehlermeldung:
Syntaxfehler beim Konvertieren des varchar-Wertes 'Param1' in eine Spalte
vom Datentyp int.


Meine Tabelle ist so aufgebaut:

CREATE TABLE [test].[test](
[id] [int] NULL DEFAULT (0)
[pizzaria] [varchar](32) COLLATE Latin1_General_CI_AS NULL,
[anmeldung] [smalldatetime] NULL,
[typ] [smallint] NULL,
) ON [PRIMARY]

Ich setze mir die Parameter folgendermaßen zusammen:

// 1 int strId
objSqlDbType[0] = SqlDbType.Int;
objValue[0] = Convert.ToInt16(strId);

// varchar Session("Pizzaria")
objSqlDbType[1] = SqlDbType.VarChar;
objValue[1] = Session["Pizzaria"].ToString().Trim();

// 12 smalldatetime dt
objSqlDbType[11] = SqlDbType.SmallDateTime;
objValue[11] = DateTime.Now;

// 13 smallint strWTyp
objSqlDbType[12] = SqlDbType.SmallInt;
objValue[12] = Convert.ToInt16(strWTyp);

SqlCommandNonQuery(strSql, objSqlDbType, objValue);

In dieser Funktion füre ich die SQL-Anweisung aus:

public int SqlCommandNonQuery(string strSql, SqlDbType[] objType, object[]
objVal)
{
SqlConnection objSqlConn = null;
SqlCommand objSqlCmd = null;
string strConnStr = "";
string strParamName = "";
int nValue = 0;

try
{
strConnStr = global.ReadWebConfig2String("ConnectionString");

objSqlConn = new SqlConnection(strConnStr);
objSqlCmd = new SqlCommand(strSql, objSqlConn);

int nIndex = 0;
foreach (object objTmp in objVal)
{
strParamName = "@Param" + Convert.ToString(nIndex + 1);
objSqlCmd.Parameters.Add(strParamName, objType[nIndex]).Value =
objVal[nIndex];
nIndex++;
}

objSqlConn.Open();
nValue = objSqlCmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
...
}
catch (Exception ex)
{
...
}
finally
{
if (objSqlCmd != null) objSqlCmd.Dispose();
if (objSqlConn != null)
{
objSqlConn.Close();
objSqlConn.Dispose();
}
}

return nValue;
}




-
XXL-Pizza: Der Schnelle Weg zu Ihrer Pizza
http://www.xxl-pizza.de
 

Lesen sie die antworten

#1 Peter Fleischer
28/09/2008 - 19:31 | Warnen spam
"AndreasU" schrieb im Newsbeitrag
news:
Ich möchte auf einen SQL-Server2005 eine INSERT Anweisung mit Parametern
ausführen. Ich bekomme dabei immer einen Fehler und weiß nicht woran es
liegt(ich nutze ASP.NET und C# 2005). Das googln brachte leider auch
nichts.

Wenn ich die INSERT Anweisung
"INSERT INTO users (id,Pizzaria, Anmeldung, TYP) VALUES
(Param1,Param2,Param3,Param4)"



Probier es mal so:

INSERT INTO users (id,Pizzaria, Anmeldung, TYP) VALUES
(@Param1,@Param2,@Param3,@Param4)


Viele Gruesse

Peter

Ähnliche fragen