2

これをストアドプロシージャに保存するにはどうすればよいですか? ストアド プロシージャを C# で実行しますか?

string a = "Select * from EmpTable Where EmpName Like @SearchItem";

using (SqlCommand SqlCommand = new SqlCommand(" "+ a +" ", myDatabaseConnection))
{
     SqlCommand.Parameters.AddWithValue("@SearchItem", "%" + textBox1.Text + "%");
}
4

4 に答える 4

0

文字列を削除して、代わりにこの SQL コードを内部に持つストアド プロシージャを呼び出したいというあなたの言い分は何ですか? そうだとすれば..

SQL Server 2008 管理スタジオを想定しています。

管理スタジオで「データベース」を展開し、 「プログラマビリティ」を展開します... 右クリックして新しいストアドプロシージャを作成し、内部のすべてのコードを削除します。

次に、次のように入力します。

USE [YourDataBaseName]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AnyName] 
@SearchItem as nvarchar(MAX)
AS
Select * from EmpTable Where EmpName Like @SearchItem

実行/実行をクリックしてデータベースを更新します。ストアド プロシージャ フォルダを見ると、新しいストアド プロシージャが表示されます。

次に、( C#.Net を想定) コードで。

public string GetUserFinal(string _userInput)
{
    string temp = "";
    using (SqlConnection myConn = new SqlConnection(Conn))
    {
        using (SqlCommand myCommand = new SqlCommand())
        {
            myCommand.CommandType = CommandType.StoredProcedure;
            myCommand.CommandText = "dbo.your procedure name";
            myCommand.Parameters.AddWithValue("@SearchItem", _userInput);
            SqlDataReader reader = myCommand.ExecuteReader();
            myCommand.Connection = myConn;
            While (reader.read())
            {
                //populate a string? or do something else?
            }
        }
    }
    return temp;
}

より良い方法は、これらすべてを厳密に型付けすることです。したがって、フィールドとタイプが何であれ、モデルを作成してから、リストを作成し、そのリストを繰り返し処理して、この関数からバインドします。しかし、基本がわかるように、これは構文を確認するだけで機能するはずです。

于 2013-07-25T09:32:20.533 に答える
0

以下のようなストアド プロシージャを作成します。

Create Procedure dbo.Test
@SearchItem
AS
BEGIN
BEGIN TRY
IF EXISTS(SELECT 1 FROM dbo.Table WHERE EmpName LIKE '%'+@SearchItem+'%')
      SELECT * FROM dbo.Table WHERE EmpName LIKE '%'+@SearchItem+'%'
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS 'ErrorNumber', ERROR_MESSAGE() AS 'ErrorMessage', ERROR_SEVERITY() AS 'ErrorSeverity', ERROR_STATE() AS 'ErrorState', ERROR_LINE() AS 'ErrorLine'
RETURN ERROR_NUMBER()
END CATCH
END

これで、以下のようにコード ビハインドでこの sp を参照できます。

SqlConnection xconn=new SqlConnection(Write your connection string);
SqlCommand xcommand=new SqlCommand("Test",xconn);
xcommand.CommandType=CommandType.StoredProcedure;
xcommand.Parameters.AddWithValue("@SearchItem",DbType.String,txtBox1.Text);
xconn.Open();
xCommand.ExecuteNonQuery();
xconn.Close();
于 2013-07-25T09:33:45.657 に答える
-1

これがストアド プロシージャになります (コードはテストしていません)。

CREATE PROCEDURE TestStoredProc 
    @SearchItem nvarchar(MAX)
AS
BEGIN

    SET NOCOUNT ON;

    Select * 
    from EmpTable 
    Where EmpName Like '%' + @SearchItem + '%'

END
GO

次に、コード側でこれを行います:

using (var conn = new SqlConnection(connectionString))
using (var command = new SqlCommand("TestStoredProc", conn) { 
CommandType = CommandType.StoredProcedure, Parameters.AddWithValue("@SearchItem",textbox.Text)}) {

}
于 2013-07-25T09:17:22.010 に答える