• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

C#中怎么样用sql server的储存过程?

formatkm 2003-09-06 10:07:33
在用sqlDataAdapter自动生产储存过程后,怎么样可以随意的操作数据库?有没有简便直观的方法?请举例。
...全文
10 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lmdhit 2003-09-07
建立Command对象,但是对象的CommandType属性必须设置为 Procedure
回复
spiketang 2003-09-07
把string 的选择或插入语句改存储过程的名就行了,得用参数年来获得!
回复
dyesucker 2003-09-07
也可以直接用sql语句execute
回复
91bct 2003-09-07
下面是我写的调用存储过程的方法,存储过程有返回值,参数名为v_out_serialno,代码如下:【其他两个参数为输入参数,在过程中的参数名是:v_prefix,v_length】
private string returnSerialNo(string sPrefix,int iLength)
{
string sproc="get_serialno_pro";
OleDbCommand cmd=new OleDbCommand(sproc);
cmd.CommandType=CommandType.StoredProcedure;
//cmd.Connection=Conn

OleDbParameter para_prefix=new OleDbParameter("v_prefix",OleDbType.Char,1);
para_prefix.Value=sPrefix;
cmd.Parameters.Add(para_prefix);

OleDbParameter para_length=new OleDbParameter("v_length",OleDbType.Integer);
para_length.Value=iLength;
cmd.Parameters.Add(para_length);

OleDbParameter para_out_serialno=new OleDbParameter("v_out_serialno",OleDbType.VarChar,20);
para_out_serialno.Direction=System.Data.ParameterDirection.Output;
cmd.Parameters.Add(para_out_serialno);
// cmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("v_out_serialno",OleDbType.VarChar,
// 10,System.Data.ParameterDirection.Output,false,0,0,"sursn",DataRowVersion.Default,0));

cmd.Connection=ConnClass.conn2;
if(cmd.Connection.State!=ConnectionState.Open)
cmd.Connection.Open();
try
{
cmd.ExecuteNonQuery();
string sSerialno=cmd.Parameters["v_out_serialno"].Value.ToString();
cmd.Connection.Close();
return sSerialno;
}
catch(Exception err)
{
//MessageBox.Show(err.Message);
Debug.Fail(err.Message);
return "";
}
}
这是在Oracle环境下调用的。
回复
Edifier0709 2003-09-07
http://tech.ccidnet.com/pub/disp/Article?columnID=1105&articleID=58457&pageNO=1
回复
doose 2003-09-06
http://tech.ccidnet.com/pub/disp/Article?columnID=1105&articleID=58457&pageNO=1
回复
zenonline 2003-09-06
你也可以用SQL语言形式的.如:

SqlCommandtemp.CommandText=@"EXEC produrceName "+parametername1+" ,"+parametername1+","+parametername1;
回复
91bct 2003-09-06
你是想了解在c#下怎么调用sqlserver存储过程吧?
如果是,如下是我用过的例子代码:
假设存储过程名为Sp_InsertMyTable
在C#中如下调用:
private int MethodOfPro(string ID,string name)
{
string sproc="Sp_InsertMyTable";
SqlCommand cmd=new SqlCommand(sproc);
cmd.CommandType=CommandType.StoreProcedure;
cmd.Connection=this.myConnection;

SqlParameter para1=new SqlParameter("v_id",SqlDbType.Char,10);
para1.value=ID;
cmd.Parameters.Add(para1);

SqlParameter para2=new SqlParameter("v_name",SqlDbType.VarChar,20);
//这个数据类型是Oracle的,不知道SqlServer是不是一样,不好意思:)
para2.value=name;
cmd.Parameters.Add(para2);

if(cmd.Connection.State!=ConnectionState.Open)
cmd.Connection.Open();
int iAffectRows=cmd.ExecuteNonQuery();
cmd.Connection.Close();
return iAffectRows;
}
说明:上面的v_id,和v_name是存储过程中的输入参数。
如果有存储过程中有输出参数则在
【SqlParameter para1=new SqlParameter("v_id",SqlDbType.Char,10);
para1.value=ID;
cmd.Parameters.Add(para1);】中做相应的变化就可以了,主要是说明这个参数是输出的。

回复
hq1305018 2003-09-06
跟执行查询差不多,要注意的是,Command对象的.CommandType 属性要是CommandType.StoredProcedure;另外要有一些参数要加进去。参数有输入型也有输出型。就是用Parameters属性就行了。
回复
qimini 2003-09-06
?
回复
bys_home 2003-09-06
short shortRtn = 0;
SqlConnection myCnn = new SqlConnection(strCon);
SqlCommand cmdGetUserName = new SqlCommand();
myCnn.Open();
cmdGetUserName = myCnn.CreateCommand();
cmdGetUserName.CommandType = CommandType.StoredProcedure;
cmdGetUserName.CommandText = "PR_SelectUserName";
cmdGetUserName.Parameters.Add(new SqlParameter("@strUserCode",strUserCode));
cmdGetUserName.Parameters.Add(new SqlParameter("@intRtn",shortRtn));
cmdGetUserName.Parameters["@intRtn"].Direction = ParameterDirection.InputOutput;
strUserName = cmdGetUserName.ExecuteScalar().ToString();
shortRtn = (short)cmdGetUserName.Parameters["@intRtn"].Value;
myCnn.Close();
return shortRtn;
回复
相关推荐
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2003-09-06 10:07
社区公告

让您成为最强悍的C#开发者