为什么在三层结构中使用ExecuteNonQuery总是返回-1?
lanxe 2004-11-14 10:42:00 直接在查询分析下运行储存过程是没有问题的,但一放到程序里运行时就总是返回-1。
但当ExecuteNonQuery换成ExecuteReader时是可以读取数据的。
源代码如下:
for(i = 0; i < myMasters.Length; i++)
{
SqlParameter[] parms = new SqlParameter[]{
new SqlParameter("@Username", SqlDbType.VarChar)
};
parms[0].Value = myMasters[i];
int k = inc.sqlHelper.ExecuteNonQuery("Deiva_getUserExist",parms);
}
sqlhelper.cs
-----------------------------------------------------
public static int ExecuteNonQuery(string processText, SqlParameter[] cmdParms)
{
SqlCommand myCommand = new SqlCommand();
using (SqlConnection myConn = new SqlConnection(ConfigurationSettings.AppSettings["myConnString"])) {
PrepareCommand(myCommand,myConn,processText,cmdParms);
int myRead = myCommand.ExecuteNonQuery();
myCommand.Parameters.Clear();
return myRead;
}
}
private static void PrepareCommand(SqlCommand myCommand,SqlConnection myConn,string processText, SqlParameter[] cmdParms)
{
if (myConn.State != ConnectionState.Open){
myConn.Open();
}
myCommand.Connection = myConn;
myCommand.CommandText = processText;
myCommand.CommandType = CommandType.StoredProcedure;
if(cmdParms != null){
foreach (SqlParameter parm in cmdParms){
myCommand.Parameters.Add(parm);
}
}
}