有没有C#调用存储过程的Sample 存储过程名称P_Test @a,@b,@c返回一个结果集合 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SqlConnection nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");SqlCommand salesCMD = new SqlCommand("SalesByCategory", nwindConn);salesCMD.CommandType = CommandType.StoredProcedure;SqlParameter myParm = salesCMD.Parameters.Add("@CategoryName", SqlDbType.NVarChar, 15);myParm.Value = "Beverages";nwindConn.Open();SqlDataReader myReader = salesCMD.ExecuteReader();Console.WriteLine("{0}, {1}", myReader.GetName(0), myReader.GetName(1));while (myReader.Read()){ Console.WriteLine("{0}, ${1}", myReader.GetString(0), myReader.GetDecimal(1));}myReader.Close();nwindConn.Close(); 我的这个存储过程怎么就没有结果结合??执行 ret =cmd.ExecuteNonQuery();返回 -1为什么??public static int Test(DateTime StartTime,DateTime EndTime,int SMTP,string STDCD,string JL,out DataSet ds ) { int ret=0; ds=null; OleDbDataAdapter ada; OleDbConnection Constring=new OleDbConnection(ConStr); OleDbCommand cmd=new OleDbCommand("XunQi",Constring); cmd.CommandType=CommandType.StoredProcedure; cmd.Parameters.Add("@StartTime", OleDbType.DBTimeStamp).Value=StartTime ; cmd.Parameters.Add("@EndTime", OleDbType.DBTimeStamp).Value=EndTime ; cmd.Parameters.Add("@SMTP", OleDbType.Integer).Value=SMTP ; cmd.Parameters.Add("@STDCD", OleDbType.VarChar, 255).Value=STDCD ; cmd.Parameters.Add("@JL", OleDbType.VarChar, 10).Value=JL ; try { Constring.Open(); ret =cmd.ExecuteNonQuery(); if (ret>0) { ada=new OleDbDataAdapter(cmd); ada.Fill(ds,"t1"); cmd.Parameters.Clear(); } else { cmd.Parameters.Clear(); ret=-1000; //无数据 } } catch(Exception e) { //数据库操作发生错误,返回错误代码 System.Diagnostics.Debug.WriteLine(e.Message); return -1001; } finally { Constring.Close(); } return ret; } salesCMD.CommandType = CommandType.StoredProcedure;//就是这句关键 我的这个存储过程怎么就没有结果结合??执行 ret =cmd.ExecuteNonQuery();//返回受影响的条数返回 -1你的存储过程中同时有“Select”和“Update,Insert等其他类型”就返回-1,因为select不影响数据,其他那些影响。所以这个行数就出问题了。不知道是不是bug还是另有原因。反正你一个过程里有“影响”和“不影响”的2种操作的SQL块,它就喜欢返回-1 access数据库查询问题 在C#里,如何提起数据库中的数组 怎么样获取checkboxlist中选中的值? c#.net webform 如何点击按钮弹出一个模式from窗体 我用C#在Excel中画了一个矩形,可无法把它修改为想要的颜色? 用image控件获得到的图片怎么不能保存啊? 打印条形码! 大哥!大姐!大爺!大媽們幫幫忙吧,要死人了! 巨搞笑的新闻联播 求助 请大家多多的来帮助哦!!!!!!!!!!!!! 关于远程调用和GAC的问题,请高手解答!在线等!
salesCMD.CommandType = CommandType.StoredProcedure;SqlParameter myParm = salesCMD.Parameters.Add("@CategoryName", SqlDbType.NVarChar, 15);
myParm.Value = "Beverages";nwindConn.Open();SqlDataReader myReader = salesCMD.ExecuteReader();Console.WriteLine("{0}, {1}", myReader.GetName(0), myReader.GetName(1));while (myReader.Read())
{
Console.WriteLine("{0}, ${1}", myReader.GetString(0), myReader.GetDecimal(1));
}myReader.Close();
nwindConn.Close();
执行 ret =cmd.ExecuteNonQuery();
返回 -1
为什么??public static int Test(DateTime StartTime,DateTime EndTime,int SMTP,string STDCD,string JL,out DataSet ds )
{
int ret=0;
ds=null;
OleDbDataAdapter ada;
OleDbConnection Constring=new OleDbConnection(ConStr);
OleDbCommand cmd=new OleDbCommand("XunQi",Constring);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@StartTime", OleDbType.DBTimeStamp).Value=StartTime ;
cmd.Parameters.Add("@EndTime", OleDbType.DBTimeStamp).Value=EndTime ;
cmd.Parameters.Add("@SMTP", OleDbType.Integer).Value=SMTP ;
cmd.Parameters.Add("@STDCD", OleDbType.VarChar, 255).Value=STDCD ;
cmd.Parameters.Add("@JL", OleDbType.VarChar, 10).Value=JL ;
try
{
Constring.Open();
ret =cmd.ExecuteNonQuery();
if (ret>0)
{
ada=new OleDbDataAdapter(cmd);
ada.Fill(ds,"t1");
cmd.Parameters.Clear();
}
else
{
cmd.Parameters.Clear(); ret=-1000; //无数据
}
}
catch(Exception e)
{
//数据库操作发生错误,返回错误代码
System.Diagnostics.Debug.WriteLine(e.Message);
return -1001;
}
finally
{
Constring.Close();
}
return ret; }
执行 ret =cmd.ExecuteNonQuery();//返回受影响的条数
返回 -1你的存储过程中同时有“Select”和“Update,Insert等其他类型”就返回-1,
因为select不影响数据,其他那些影响。所以这个行数就出问题了。不知道是不是bug还是另有原因。反正你一个过程里有“影响”和“不影响”的2种操作的SQL块,它就喜欢返回-1