的ExecuteNonQuery不工作 [英] ExecutenonQuery not working

查看:164
本文介绍了的ExecuteNonQuery不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经存储的过程如下:

  ALTER PROC pr_Update_Users_Nomination 

@UserID AS VARCHAR (100),
@Nominated AS位

AS

更新用户
设置isNominated = @Nominated
,其中
EMPID = @UserID;



我想从C#代码调用这个过程:下面是我想的代码:

 无效OpenConnection的()
{
串提名=FALSE;
//连接字符串
串sConnString = System.Configuration.ConfigurationManager.ConnectionStrings [ConString1]的ConnectionString。
的SqlConnection mySqlCon =新的SqlConnection(sConnString);
的SqlCommand mySqlCom = mySqlCon.CreateCommand();

//调用存储过程和参数
mySqlCom.CommandText =执行pr_Update @UserID @Nominated提供;
mySqlCom.Parameters.Add(@用户名,SqlDbType.VarChar,20).value的用户名=;
mySqlCom.Parameters.Add(@提名,SqlDbType.Bit).value的提名=;

mySqlCon.Open();
mySqlCom.ExecuteNonQuery();
mySqlCon.Close();
}



我得到一个错误说

 附近有语法错误@Nominated 


解决方案

首先,在执行过程时,与参数(取值的),参数之间以逗号分隔

 执行pr_Update @UserID,@Nominated 

第二,修改你的代码到这一点,

 字符串sConnString = System.Configuration.ConfigurationManager.ConnectionStrings [ConString1]的ConnectionString。使用
(SqlConnection的mySqlCon =新的SqlConnection(sConnString)),使用(的SqlCommand mySqlCom =新的SqlCommand())
{
mySqlCom.Connection = mySqlCon
{
;
mySqlCom.CommandText =pr_Update;
mySqlCom.CommandType = CommandType.StoredProcedure;
mySqlCom.Parameters.Add(@用户名,SqlDbType.VarChar,20).value的用户名=;
mySqlCom.Parameters.Add(@提名,SqlDbType.Bit).value的提名=;

{
mySqlCon.Open();
mySqlCom.ExecuteNonQuery();
}
赶上(SQLEXCEPTION EX)
{
//做例外
//不要把它隐藏的东西
}

}
}


I have stored proc as below:

ALTER PROC pr_Update_Users_Nomination
(
      @UserID AS VARCHAR(100),  
      @Nominated AS BIT
)
AS

UPDATE User
SET isNominated = @Nominated
WHERE 
EMPID = @UserID;

I want to call this procedure from c# code: Below is the code I am trying:

void OpenConnection()
{
string Nominated = "False";
    //Connection String
        string sConnString = System.Configuration.ConfigurationManager.ConnectionStrings["ConString1"].ConnectionString;
        SqlConnection mySqlCon = new SqlConnection(sConnString);
        SqlCommand mySqlCom = mySqlCon.CreateCommand();

        //Call the stored proc and provide in parameters
        mySqlCom.CommandText = "EXECUTE pr_Update @UserID @Nominated";
        mySqlCom.Parameters.Add("@UserID", SqlDbType.VarChar, 20).Value = UserID;
        mySqlCom.Parameters.Add("@Nominated", SqlDbType.Bit).Value = Nominated;

        mySqlCon.Open();
        mySqlCom.ExecuteNonQuery();
        mySqlCon.Close();
}

I get an error saying

Incorrect Syntax near @Nominated

解决方案

first, when executing a procedure with parameter(s), separate the parameters with a comma

EXECUTE pr_Update @UserID, @Nominated

second, modify your code into this,

    string sConnString = System.Configuration.ConfigurationManager.ConnectionStrings["ConString1"].ConnectionString;
    using(SqlConnection mySqlCon = new SqlConnection(sConnString))
    {
        using(SqlCommand mySqlCom = new SqlCommand())
        {
            mySqlCom.Connection = mySqlCon;
            mySqlCom.CommandText = "pr_Update";
            mySqlCom.CommandType = CommandType.StoredProcedure;
            mySqlCom.Parameters.Add("@UserID", SqlDbType.VarChar, 20).Value = UserID;
            mySqlCom.Parameters.Add("@Nominated", SqlDbType.Bit).Value = Nominated;
            try
            {
                mySqlCon.Open();
                mySqlCom.ExecuteNonQuery();
            }
            catch(SqlException ex)
            {
                // do something with the exception
                // don't hide it
            }

        }
    }

这篇关于的ExecuteNonQuery不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆