c#调用存储过程,写出整个过程, 有带参数的,谢谢, c#调用存储过程,写出整个过程, 有带参数的,谢谢,有入有出的, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 定义一个SqlCommand CmdCmd.CommandText = 存储过程名;Cmd.CommandType = System.Data.CommandType.StoredProcedure ;Cmd.Parameters.Add(参数,传递的值);不返回值Cmd.ExecuteNonQuery()返回值就用适配器System.Data.SqlClient.SqlDataAdapter Adapter =new System.Data.SqlClient.SqlDataAdapter(Cmd); public static void GetServiceOrderFromMobile(string strMobile,ref string[] strServerCode,ref string[] strServerName,ref int intTotals) { try { OracleCommand cmd=new OracleCommand(); cmd.CommandType=System.Data.CommandType.StoredProcedure; cmd.Connection=CallCenterDataBase.gDb; cmd.CommandText="p1168_user_info"; cmd.Parameters.Add("in_mobile",OracleType.VarChar, 20); cmd.Parameters["in_mobile"].Value=strMobile; cmd.Parameters["in_Mobile"].Direction=ParameterDirection.Input; cmd.Parameters.Add("out_svrcode",OracleType.VarChar,180); cmd.Parameters["out_svrcode"].Direction=ParameterDirection.Output; cmd.Parameters.Add("out_subjectname",OracleType.VarChar,180); cmd.Parameters["out_subjectname"].Direction=ParameterDirection.Output; cmd.Parameters.Add("out_total",OracleType.Int16,14); cmd.Parameters["out_total"].Direction=ParameterDirection.Output; cmd.ExecuteNonQuery(); strServerCode=cmd.Parameters["out_svrcode"].Value.ToString().Split(Convert.ToChar(",")); strServerName=cmd.Parameters["out_subjectname"].Value.ToString().Split(Convert.ToChar(",")); intTotals=(short)cmd.Parameters["out_total"].Value; } catch (Exception ex) { fMain.ShowMessage("根据手机号("+ strMobile +")提取已定制的服务出错("+ ex.Message +")!"); intTotals=0; } } 谢谢这位大哥,OracleType.Int16,OracleType.Varchar,总共有多少个类型啊, 能不能写出来作为参考,谢谢! 你敲OracleType. 后面的就都出来了。 用多個參數的存儲調用:string[] ParName=new string[參數個數]{參數名稱};string[] ParValue=new string[參數個數]{參數相對應的值};string[] SqlDbType=new string[參數個數]{參數的類型};try{ SqlCommand mycomm=new SqlCommand(); myconn.Connection=myconn; mycomm.CommandType=System.Data.CommandType.StoredProcedure ; mycomm.CommandText=參數名稱; for(int i=0;i<ParName.Length;i++) { int Len=200;//定義字符變長數; if(SqlDbType[i]=="varchar") { mycomm.Parameters.Add(ParName[i],SqlDbType[i],Len).Value=ParValue[i]; } else { mycomm.Parameters.Add(ParName[i],SqlDbType[i]).Value=ParValue[i]; } } mycomm.ExecuteNonQuery() } catch(Exception ee) { return ee.ToString(); } 网络上看到的:存储过程 p_sys_Login 定义如下:CREATE PROCEDURE p_sys_Login @argUserID varchar(20), --用户名 @argPassword varchar(20), --密码 @argResult varchar(50) OUTPUT --登录结果AS/* ... ...*/ 下面演示如何在C#中用最简洁有效的代码执行该存储过程并返回数据:/// <summary>/// 用户登录验证/// </summary>/// <param name="userID">用户名</param>/// <param name="password">密码</param>public void Login(string userID, string password){ //数据库连接字符串存储在 Web.config 中 string cnnString = ConfigurationSettings.AppSettings["ConnectionString"]; SqlConnection cnn = new SqlConnection(cnnString); // string sql = string.Format("EXEC p_sys_Login '{0}', '{1}', @Result OUTPUT", userID, password); SqlCommand cmd = new SqlCommand(sql, cnn); //建立并添加和“@Result OUTPUT”对应的参数 SqlParameter paramResult = new SqlParameter("@Result", SqlDbType.VarChar, 50); paramResult.Direction = ParameterDirection.Output; cmd.Parameters.Add(paramResult); cnn.Open(); cmd.ExecuteNonQuery(); cnn.Close(); //获取存储过程返回的结果 string result = paramResult.Value.ToString(); //... ...} C# 图片转换成二进制,二进制转换图片的问题 如何修改使用ClickOnce在客户端生成的文件夹名称 vs 2003 一个很奇怪的问题。 C#两个窗体间如何传递数组 请问大家做测试的时候都用什么工具? 送分问菜鸟问题,在线等! 急急,在线等待,各位大哥帮一下忙,看一个简单问提 可能比较简单,但问了好几个人都没解决--关于form。 .NET急待解决的问题 请教下卸载程序是怎么执行的(Unintall.exe) 设计模式的高手请进,正在学习的朋友也来--系列模式答案求解讨论之工厂模式 我想双击listview中的item,从而弹出一个窗体,不知道如何实现
Cmd.CommandText = 存储过程名;
Cmd.CommandType = System.Data.CommandType.StoredProcedure ;
Cmd.Parameters.Add(参数,传递的值);
不返回值
Cmd.ExecuteNonQuery()
返回值就用适配器
System.Data.SqlClient.SqlDataAdapter Adapter =new System.Data.SqlClient.SqlDataAdapter(Cmd);
{
try
{
OracleCommand cmd=new OracleCommand();
cmd.CommandType=System.Data.CommandType.StoredProcedure;
cmd.Connection=CallCenterDataBase.gDb; cmd.CommandText="p1168_user_info"; cmd.Parameters.Add("in_mobile",OracleType.VarChar, 20);
cmd.Parameters["in_mobile"].Value=strMobile;
cmd.Parameters["in_Mobile"].Direction=ParameterDirection.Input;
cmd.Parameters.Add("out_svrcode",OracleType.VarChar,180);
cmd.Parameters["out_svrcode"].Direction=ParameterDirection.Output;
cmd.Parameters.Add("out_subjectname",OracleType.VarChar,180);
cmd.Parameters["out_subjectname"].Direction=ParameterDirection.Output;
cmd.Parameters.Add("out_total",OracleType.Int16,14);
cmd.Parameters["out_total"].Direction=ParameterDirection.Output;
cmd.ExecuteNonQuery();
strServerCode=cmd.Parameters["out_svrcode"].Value.ToString().Split(Convert.ToChar(","));
strServerName=cmd.Parameters["out_subjectname"].Value.ToString().Split(Convert.ToChar(","));
intTotals=(short)cmd.Parameters["out_total"].Value;
}
catch (Exception ex)
{
fMain.ShowMessage("根据手机号("+ strMobile +")提取已定制的服务出错("+ ex.Message +")!");
intTotals=0;
}
}
string[] ParName=new string[參數個數]{參數名稱};
string[] ParValue=new string[參數個數]{參數相對應的值};
string[] SqlDbType=new string[參數個數]{參數的類型};
try
{
SqlCommand mycomm=new SqlCommand();
myconn.Connection=myconn;
mycomm.CommandType=System.Data.CommandType.StoredProcedure ;
mycomm.CommandText=參數名稱;
for(int i=0;i<ParName.Length;i++)
{
int Len=200;//定義字符變長數;
if(SqlDbType[i]=="varchar")
{
mycomm.Parameters.Add(ParName[i],SqlDbType[i],Len).Value=ParValue[i];
}
else
{
mycomm.Parameters.Add(ParName[i],SqlDbType[i]).Value=ParValue[i];
}
}
mycomm.ExecuteNonQuery()
}
catch(Exception ee)
{
return ee.ToString();
}
存储过程 p_sys_Login 定义如下:CREATE PROCEDURE p_sys_Login @argUserID varchar(20), --用户名 @argPassword varchar(20), --密码 @argResult varchar(50) OUTPUT --登录结果AS/* ... ...*/ 下面演示如何在C#中用最简洁有效的代码执行该存储过程并返回数据:
/// <summary>/// 用户登录验证/// </summary>/// <param name="userID">用户名</param>/// <param name="password">密码</param>public void Login(string userID, string password){ //数据库连接字符串存储在 Web.config 中 string cnnString = ConfigurationSettings.AppSettings["ConnectionString"]; SqlConnection cnn = new SqlConnection(cnnString);
//
string sql = string.Format("EXEC p_sys_Login '{0}', '{1}', @Result OUTPUT", userID, password); SqlCommand cmd = new SqlCommand(sql, cnn); //建立并添加和“@Result OUTPUT”对应的参数 SqlParameter paramResult = new SqlParameter("@Result", SqlDbType.VarChar, 50); paramResult.Direction = ParameterDirection.Output; cmd.Parameters.Add(paramResult); cnn.Open(); cmd.ExecuteNonQuery(); cnn.Close(); //获取存储过程返回的结果 string result = paramResult.Value.ToString(); //... ...}