SqlCeCommand.Prepare Method

Creates a prepared (or compiled) version of the command on the data source.

Namespace: System.Data.SqlServerCe
Assembly: System.Data.SqlServerCe (in system.data.sqlserverce.dll)

public override void Prepare ()
public void Prepare ()
public override function Prepare ()

Exception typeCondition


The Connection is not set.

-or -

The Connection is not Open.

If the CommandType property is set to TableDirect, Prepare does nothing.

Before you call Prepare, specify the data type of each parameter in the statement to be prepared. For each parameter that has a variable-length data type, you must set the Size property to the maximum size needed. Prepare returns an error if these conditions are not met.

If you call an Execute method after calling Prepare, any parameter value that is larger than the value specified by the Size property is automatically truncated to the original specified size of the parameter, and no truncation errors are returned.

SqlCeConnection conn = new SqlCeConnection("Data Source = MyDatabase.sdf;");

SqlCeCommand command = conn.CreateCommand();

// Create and prepare a SQL statement
command.CommandText = "INSERT INTO Region (RegionID, RegionDescription) VALUES (@id, @desc)";

SqlCeParameter param = null;

// NOTE:
// For optimal performance, make sure you always set the parameter
// type and the maximum size - this is especially important for non-fixed
// types such as NVARCHAR or NTEXT; In case of named parameters, 
// SqlCeParameter instances do not need to be added to the collection
// in the order specified in the query; If however you use ? as parameter
// specifiers, then you do need to add the parameters in the correct order
param = new SqlCeParameter("@id", SqlDbType.Int);

param = new SqlCeParameter("@desc", SqlDbType.NVarChar, 100);

command.Parameters["@desc"].Size = 100;

// Calling Prepare after having set the CommandText and parameters

// Execute the SQL statement

// Change parameter values and call ExecuteNonQuery again
command.Parameters[0].Value = 21;
command.Parameters[1].Value = "mySecondRegion";

  • Full trust for the immediate caller. This member cannot be used by partially trusted code. For more information, see .

Windows CE, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows XP Professional x64 Edition, Windows XP SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Compact Framework

Supported in: 2.0, 1.0

Community Additions