ParameterDirection.Output和ParameterDirect.ReturnValue还有Input有什么区别?

bullion 2003-10-17 09:28:50
如题!

看了很久还是搞不清它们的区别,请各位帮忙!
...全文
60 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gOODiDEA 2003-10-21
  • 打赏
  • 举报
回复
ParameterDirection.Output和ParameterDirect.ReturnValue还有Input

////


输出值,返回值,输入值
bullion 2003-10-21
  • 打赏
  • 举报
回复
to gOODiDEA(无语)
谢谢你的答复.

我先结帖了,不过我还有一事相求 : )

麻烦你帮我讲讲他的原理,谢谢了.

回复在这个贴子上就行
bullion 2003-10-17
  • 打赏
  • 举报
回复
怎么没人回答啊
private void button1_Click(object sender, EventArgs e) { if (textBox1.Text.Trim() == "" || textBox2.Text.Trim() == "" || textBox3.Text.Trim() == "" || textBox4.Text.Trim() == "" || textBox5.Text.Trim() == "" || textBox6.Text.Trim() == "") { MessageBox.Show("数据不完整! 请重新输入"); return; } SqlConnection conn = new SqlConnection(strcon); string sql = "INSERT INTO View_1 VALUES(" + textBox1.Text.Trim() + ",'" + textBox2.Text.Trim() + "'," + textBox3.Text.Trim() + "," + textBox4.Text.Trim() + ",'" + textBox5.Text.Trim() + "','" + textBox6.Text.Trim() + "')"; SqlCommand cmd = new SqlCommand(sql, conn); SqlParameter xuhao = new SqlParameter("@in_xuhao", SqlDbType.Int); xuhao.Direction = ParameterDirection.Input; xuhao.Value = textBox1.Text.Trim(); cmd.Parameters.Add(xuhao); SqlParameter Tit = new SqlParameter("@in_Tit", SqlDbType.Char, 30); Tit.Direction = ParameterDirection.Input; Tit.Value = textBox2.Text.Trim(); cmd.Parameters.Add(Tit); SqlParameter price = new SqlParameter("@in_price", SqlDbType.Int); price.Direction = ParameterDirection.Input; price.Value = textBox3.Text.Trim(); cmd.Parameters.Add(price); SqlParameter number = new SqlParameter("@in_number", SqlDbType.Int); number.Direction = ParameterDirection.Input; number.Value = textBox4.Text.Trim(); cmd.Parameters.Add(number); SqlParameter press = new SqlParameter("@in_press", SqlDbType.Char, 30); press.Direction = ParameterDirection.Input; press.Value = textBox5.Text.Trim(); cmd.Parameters.Add(press); SqlParameter Huang = new SqlParameter("@in_Huang", SqlDbType.Char, 10); Huang.Direction = ParameterDirection.Input; Huang.Value = textBox6.Text.Trim(); cmd.Parameters.Add(Huang); try { conn.Open(); int a = cmd.ExecuteNonQuery(); if (a != 0) { MessageBox.Show("添加成功"); } } catch { MessageBox.Show("添加出错!"); } finally { conn.Close(); } }
根据你输入的汉子 自动生成五笔代码和拼音代码(简码:取每个汉子的拼音的首字母或者每个汉子的五笔的首字母)本人写了两个存储过程 其实几乎差不多 但是往往啊 会因为一点点小问题导致代码失败 不过 下面的两个存储过程都是成功的 我是因为那么一点点小问题测试了一个上午才搞定了的:对应存储过程 output的参数 一定要先set@=‘’一下才能使用 否则即便是output被赋值了 可以print,但是通过程序代码还是获取不到值的 如下:(具体的在附件里哦,附件里有表数据和存储过程和c#程序代码片段):--drop procedure ChineseCode; ----------一 create procedure ChineseCode(@strkey varchar(30),@rekeysPY varchar(30) output, @rekeysWB varchar(30) output) as declare @keylength int declare @nowstep int declare @temppy varchar(20) declare @tempwb varchar(20) declare @tempkey varchar(4) declare @strpy varchar(30) declare @strwb varchar(30) set @keylength=len(@strkey) set @nowstep=1 set @strpy='' set @strwb='' 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 end set @rekeysPY=@strpy set @rekeysWB=@strwb print @rekeysPY+'--'+@rekeysWB end GO --------------------二 --drop procedure ChineseCode; create procedure ChineseCode ( @strkey varchar(30) , @rekeysPY varchar(30) output, @rekeysWB varchar(30) output) as declare @keylength int declare @i int declare @temppy varchar(10) declare @tempwb varchar(10) declare @tempkey varchar(2) set @keylength=len(@strkey) set @i=1 set @temppy='' set @tempwb='' set @rekeysPY='' set @rekeysWB='' begin while (@i<=@keylength) 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 print @rekeysPY+'--'+@rekeysWB end GO ----------------三 c#代码 PubClass.ContSql db = new MilkDisPatchingManage.PubClass.ContSql(); SqlCommand sqlcmd = new SqlCommand(); sqlcmd.CommandType = CommandType.StoredProcedure; sqlcmd.CommandText = "ChineseCode"; sqlcmd.Parameters.Add("@strkey", SqlDbType.VarChar, 30); sqlcmd.Parameters["@strkey"].Value=this.textBox1.Text.Trim();//.Direction=ParameterDirection.Input; sqlcmd.Parameters.Add("@rekeysPY", SqlDbType.VarChar,30); sqlcmd.Parameters["@rekeysPY"].Direction = ParameterDirection.Output; sqlcmd.Parameters.Add("@rekeysWB", SqlDbType.VarChar,30); sqlcmd.Parameters["@rekeysWB"].Direction = ParameterDirection.Output; int i= db.ExtCom(sqlcmd); this.textBox2.Text = sqlcmd.Parameters["@rekeysPY"].Value.ToString(); this.textBox3.Text = sqlcmd.Parameters["@rekeysWB"].Value.ToString(); db.CloseCon();
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient;// using System.Collections;// /// /// SQLHelper 的摘要说明 /// public class SQLHelper { public SQLHelper() { // // TODO: 在此处添加构造函数逻辑 // } private static SqlCommand command = new SqlCommand();// private static SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); static SQLHelper() { command.Connection = conn; } /// /// 打开数据库连接 /// private static void OpenConnect() { if (conn.State == ConnectionState.Open) { conn.Close(); } conn.Open(); } /// /// 关闭数据库连接 /// public static void CloseConnect() { if (conn.State != ConnectionState.Closed) { conn.Close(); } } /// /// /// /// /// /// <returns>returns> private static SqlCommand CreateCommand(string procName, SqlParameter[] prams) { OpenConnect();//打开DB连接 SqlCommand command = new SqlCommand(procName, conn); command.CommandType = CommandType.StoredProcedure; if (prams != null) { foreach (SqlParameter parameter in prams) { command.Parameters.Add(parameter); } } command.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null)); return command; } /// /// 执行sql命令语句 /// /// 传入要执行的sql语句 public static void ExecuteSql(string sql) { OpenConnect();//打开连接 command.CommandType = CommandType.Text; command.CommandText = sql; command.ExecuteNonQuery(); CloseConnect();//关闭连接 } /// /// 返回一个DataTable对象 /// /// 要执行的SQL命令语句 /// <returns>返回一的DataTable对象returns> public static DataTable GetDataTable(string sql) { DataSet dataSet = new DataSet(); OpenConnect();//打开DB连接 SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = command; command.CommandText = sql; command.CommandType = CommandType.Text; adapter.Fill(dataSet); CloseConnect();//关闭DB连接 return dataSet.Tables[0]; } /// /// 返回一的DataTable对象 /// /// 要执行的SQL命令语句 /// 第几页 /// 每页显示数据项数 /// /// <returns>返回一的DataTable对象returns> public static DataTable GetDataTable(string sql, int pageinfo, int pagesize, string name) { DataSet dataSet = new DataSet(); OpenConnect(); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = command; command.CommandText = sql; command.CommandType = CommandType.Text; adapter.Fill(dataSet, pageinfo, pagesize, name); CloseConnect(); return dataSet.Tables[0]; } /// /// 返回第一行的第一列的值 /// /// 要执行的SQL命令语句 /// <returns>字符串形式返回查询结果第一行的第一列的值returns> public static string GetFirstColumnValue(string sql) { OpenConnect(); command.CommandType = CommandType.Text; command.CommandText = sql; object obj2 = command.ExecuteScalar(); CloseConnect(); if (obj2 == null) { return ""; } return obj2.ToString(); } /// /// 返回一个SqlDataReader对象 /// /// 要执行的SQL命令语句 /// <returns>returns> public static SqlDataReader GetReader(string sql) { OpenConnect(); command.CommandType = CommandType.Text; command.CommandText = sql; return command.ExecuteReader(CommandBehavior.CloseConnection);//若关闭DataReader对象则关联的Connection对象也将关闭 } /// /// 返回一个bool值判断Reader对象是否存在行 /// /// 要执行的SQL命令语句 /// <returns>返回一个bool值判断Reader对象是否存在行returns> public static bool IsHasRow(string sql) { OpenConnect(); command.CommandType = CommandType.Text; command.CommandText = sql; bool flag = command.ExecuteReader().Read(); CloseConnect(); return flag; } public static DataSet RunProc(string procName, SqlParameter[] prams) { DataSet dataSet = new DataSet(); OpenConnect(); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = CreateCommand(procName, prams); adapter.Fill(dataSet); CloseConnect(); return dataSet; } public static void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader) { dataReader = CreateCommand(procName, prams).ExecuteReader(CommandBehavior.CloseConnection); } public static void RunProcNon(string procName, SqlParameter[] prams) { OpenConnect(); CreateCommand(procName, prams).ExecuteNonQuery(); CloseConnect(); } public static void RunProcNonQuery(string procName, SqlParameter[] prams) { CreateCommand(procName, prams).ExecuteNonQuery(); } public static DataTable RunProcT(string procName, SqlParameter[] prams) { DataSet dataSet = new DataSet(); OpenConnect(); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = CreateCommand(procName, prams); adapter.Fill(dataSet); CloseConnect(); return dataSet.Tables[0]; } //-------------------------------------------------------------------------------------------------------------- public static void ExecuteSqlWithIdentityTrans(ArrayList sqls) { string newValue = null; string str2 = ""; SqlTransaction transaction = null; try { OpenConnect();//打开连接 transaction = conn.BeginTransaction();//开始数据库事务 command.Transaction = transaction; foreach (string str3 in sqls) { str2 = str3; if (newValue != null) { str2 = str3.Replace("IdenStr", newValue); } command.CommandType = CommandType.Text; command.CommandText = str2; if (str3.IndexOf("Idenity") != -1) { newValue = command.ExecuteScalar().ToString(); continue; } command.ExecuteNonQuery(); } transaction.Commit();//提交数据库事务 } catch (Exception exception) { transaction.Rollback();//回滚事务 throw exception; } finally { CloseConnect();//关闭连接 } } public static void ExecuteSqlWithTrans(ArrayList sqls) { SqlTransaction transaction = null; try { OpenConnect(); transaction = conn.BeginTransaction(); command.Transaction = transaction; foreach (string str in sqls) { command.CommandType = CommandType.Text; command.CommandText = str; command.ExecuteNonQuery(); } transaction.Commit(); } catch (Exception exception) { transaction.Rollback(); throw exception; } finally { CloseConnect(); } } public static SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value) { return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value); } public static SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size) { return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null); } public static SqlParameter MakeParam(string ParamName, SqlDbType DbType, int Size, ParameterDirection Direction, object Value) { SqlParameter parameter; if (Size > 0) { parameter = new SqlParameter(ParamName, DbType, Size); } else { parameter = new SqlParameter(ParamName, DbType); } parameter.Direction = Direction; if ((Direction != ParameterDirection.Output) || (Value != null)) { parameter.Value = Value; } return parameter; } public static SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size) { return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null); } }

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧