SqlCeCommand.Prepare 메서드
데이터 원본에 명령의 준비 버전이나 컴파일 버전을 만듭니다.
네임스페이스: System.Data.SqlServerCe
어셈블리: System.Data.SqlServerCe(System.Data.SqlServerCe.dll)
구문
‘선언
Public Overrides Sub Prepare
‘사용 방법
Dim instance As SqlCeCommand
instance.Prepare()
public override void Prepare()
public:
virtual void Prepare() override
abstract Prepare : unit -> unit
override Prepare : unit -> unit
public override function Prepare()
구현
예외
예외 | 조건 |
---|---|
InvalidOperationException | Connection이 설정되어 있지 않은 경우 -또는- Connection이 Open이 아닌 경우 |
주의
CommandType 속성이 TableDirect로 설정되면 Prepare는 아무 작업도 수행하지 않습니다.
Prepare를 호출하기 전에 준비된 문에서 각 매개 변수의 데이터 형식을 지정합니다. 변수 길이 데이터 형식을 가진 각 매개 변수의 경우, Size 속성을 필요한 최대 크기로 설정해야 합니다. 이런 조건이 충족되지 않으면 Prepare는 오류를 반환합니다.
Prepare를 호출한 후에 Execute 메서드를 호출하면 Size 속성이 지정한 값보다 큰 매개 변수 값은 모두 자동으로 원래 지정된 매개 변수 크기로 잘리고, 잘림 오류가 반환되지 않습니다.
예
Dim conn As New SqlCeConnection("Data Source = MyDatabase.sdf;")
conn.Open()
Dim command As SqlCeCommand = conn.CreateCommand()
' Create and prepare a SQL statement
'
command.CommandText = "INSERT INTO Region (RegionID, RegionDescription) VALUES (@id, @desc)"
Dim param As SqlCeParameter = Nothing
' 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)
command.Parameters.Add(param)
param = New SqlCeParameter("@desc", SqlDbType.NVarChar, 100)
command.Parameters.Add(param)
command.Parameters("@desc").Size = 100
' Calling Prepare after having set the CommandText and parameters
'
command.Prepare()
' Execute the SQL statement
'
command.ExecuteNonQuery()
' Change parameter values and call ExecuteNonQuery again
'
command.Parameters(0).Value = 21
command.Parameters(1).Value = "mySecondRegion"
command.ExecuteNonQuery()
SqlCeConnection conn = new SqlCeConnection("Data Source = MyDatabase.sdf;");
conn.Open();
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);
command.Parameters.Add(param);
param = new SqlCeParameter("@desc", SqlDbType.NVarChar, 100);
command.Parameters.Add(param);
command.Parameters["@desc"].Size = 100;
// Calling Prepare after having set the CommandText and parameters
//
command.Prepare();
// Execute the SQL statement
//
command.ExecuteNonQuery();
// Change parameter values and call ExecuteNonQuery again
//
command.Parameters[0].Value = 21;
command.Parameters[1].Value = "mySecondRegion";
command.ExecuteNonQuery();