0

一度に 1 つのクエリを実行しようとしていますが、exsis でない場合は最初にユーザー名をチェックし、その値を挿入します。

 public int CreateUser(string UserName,string Pwd)
        {
            cmd = new SqlCommand("CreateUser", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter name = cmd.Parameters.Add("@UserName", SqlDbType.VarChar);
            name.Value = UserName;
            SqlParameter password = cmd.Parameters.Add("@Password", SqlDbType.VarChar);
            password.Value = Pwd;
            DataSet ds = new DataSet();
            adpt.SelectCommand = cmd;
            adpt.Fill(ds);
            conn.Close();
            return 0;
        }

私のストアドプロシージャは、

ALTER PROCEDURE [dbo].[CreateUser] 
    -- Add the parameters for the stored procedure here
    @UserName varchar(200) = NULL,
    @Password varchar(200) = NULL  

AS


IF NOT EXISTS(select * from[dbo].[User] where
             [dbo].[User].User_Name=@UserName)
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    BEGIN
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    insert into [dbo].[User] (User_Name,User_Password,User_Type)
    values (@UserName,@Password,'User')
END

あなたの提案を願っています

前もって感謝します

4

2 に答える 2

0

以下を試してください:

    public int CreateUser(string UserName,string Pwd)
    {
        int intRowsinserted = 0;

        cmd = new SqlCommand("CreateUser", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlParameter name = cmd.Parameters.Add("@UserName", SqlDbType.VarChar);
        name.Value = UserName;
        SqlParameter password = cmd.Parameters.Add("@Password", SqlDbType.VarChar);
        password.Value = Pwd;

        cmd.Connection.Open();
        intRowsinserted = cmd.ExecuteNonQuery();
        cmd.Connection.Close();
        conn.Close();

        return intRowsinserted;
    }

まず、データセットを返したい場合は adpt.Fill(ds) を使用する必要があります。次に、cmd.ExecuteNonQuery() を使用して、テーブルに対して挿入、更新、または削除操作を実行する必要があります。これは、挿入、更新、または削除された行の数を返します。第三に、詳細についてはhttp://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspxを参照してください

これで問題が解決する場合は、この回答を有用とマークしてください。

于 2013-05-02T07:34:27.140 に答える
0

手順の最後で SELECT @@IDENTITY または SELECT SCOPE_IDENTITY() を実行して、挿入された ID を返すことができます。値が NULL の場合、レコードは挿入されていません。

于 2013-05-02T07:21:41.310 に答える