3

私はこのストアドプロシージャを持っています:

CREATE PROCEDURE SearchEmployee
        @EmployeeID int,
        @EmployeeName nvarchar(256),
        @Address nvarchar(256),
AS
    Select 
        EmployeeId, EmployeeName, Address 
    From 
        Employee
    Where
        EmployeeID = @EmployeeID OR
        EmployeeName LIKE '%' + @EmployeeName+ '%' OR
        Address LIKE '%' + @Address+ '%' 

次に、Winforms で次のように呼び出します。

using (SqlCommand mySqlCommand1 = new SqlCommand("dbo.SearchEmployee", myDatabaseConnection))
{
            mySqlCommand1.CommandType = CommandType.StoredProcedure;
            {
                mySqlCommand1.Parameters.AddWithValue("@EmployeeID", textBox1.Text);
                mySqlCommand1.Parameters.AddWithValue("@EmployeeName", textBox1.Text);
                mySqlCommand1.Parameters.AddWithValue("@Address", textBox1.Text);
            }
        }

エラーを回避する方法

データ型 nvarchar を int に変換中にエラーが発生しました。

EmployeeIDユーザーが?の代わりに従業員名を入力した場合

ストアドプロシージャでこれを試しました:

EmployeeID = cast(@EmployeeID as varchar(10))
4

3 に答える 3

0

変化する

mySqlCommand1.Parameters.AddWithValue("@EmployeeID", textBox1.Text);

mySqlCommand1.Parameters.AddWithValue("@EmployeeID",Convert.ToInt32( textBox1.Text));
于 2013-08-17T17:18:08.150 に答える
0

代わりにこの実装をお勧めします。

  • 2 つの異なるストアド プロシージャを作成します。1 つは数値 ID 用、もう 1 つは英数字クエリ用です。
  • Winforms アプリケーションで、ユーザーが入力したコンテンツが数値かどうかを検出します。TryParse をチェックてこれを実装できます。
  • 入力の種類に応じて、どちらかを使用してください。

それがうまくいくことを願っています。

于 2013-08-17T16:37:22.787 に答える