本文介绍了的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不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!