Csharp/C#教程:C# 中用 Sqlparameter 的两种用法分享

新建一个表:

createtableabc ( idintIDENTITY(1,1)NOTNULL, namenvarchar(100), sexnvarchar(10) ) insertintoabcvalues(‘asf','男') insertintoabcvalues(‘ai','女')

创建表格完成。

新建一个存储过程:

createprocedureselbyid ( @idint, @thenamenvarchar(100)output ) as select@thename=namefromabcwhereid=@id

在执行的过程中可以用sqlparameter的几种格式来调用存储过程:

第一种是:

publicstringconnString=ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;//存储链接字符串,方便资源复用。 publicSqlConnectiongetcon() { SqlConnectionconn=newSqlConnection(); conn.ConnectionString=connString; returnconn; } privatevoidbtnsqlparauseing_Click(objectsender,EventArgse) { SqlConnectioncon=getcon(); con.Open(); stringsqlstr="insertintoabcvalues(@name,@sex)";//免除sql注入攻击 SqlCommandcmd=newSqlCommand(); cmd.Connection=con; cmd.CommandText=sqlstr; SqlParameterpara=newSqlParameter();//声明参数 para=newSqlParameter("@name",SqlDbType.NVarChar,100);//生成一个免费精选名字大全为@Id的参数,必须以@开头表示是添加的参数,并设置其类型长度,类型长度与数据库中对应字段相同,但是不能超出数据库字段大小的范围,否则报错。 para.Value=txtname.Text.ToString().Trim();//这个是输入参数,所以可以赋值。 cmd.Parameters.Add(para);//参数增加到cmd中。 para=newSqlParameter("@sex",SqlDbType.NVarChar,10); para.Value=txtsex.Text.ToString().Trim(); cmd.Parameters.Add(para); inti=cmd.ExecuteNonQuery();//执行sql语句,并且返回影响的行数。 MessageBox.Show(i.ToString()+"命令完成行受影响插入成功","提示",MessageBoxButtons.OK,MessageBoxIcon.Information); con.Close(); }

2.第二种是调用sqlparameter几种方式来调用存储过程:

1.

privatevoidbtnshuchu_Click(objectsender,EventArgse) { SqlConnectioncon=getcon(); con.Open(); SqlCommandcmd=newSqlCommand(); cmd.Connection=con; cmd.CommandText="selbyid";//存储过程的名称 cmd.CommandType=CommandType.StoredProcedure;//说明是存储过程 SqlParameterpara=newSqlParameter();//声明sqlparameter参数 para=newSqlParameter("@id",SqlDbType.Int);//这个参数是输入参数 para.Value=int.Parse(txtid.Text.ToString().Trim());//因为是输入参数所以可以赋值 cmd.Parameters.Add(para);//加入cmd中 para=newSqlParameter("@thename",SqlDbType.NVarChar,100);//参数的大小可以小于数据库的参数规定值,但不能够大于数据库的参数大小。 cmd.Parameters.Add(para);//和下面一句不可掉乱,先增加再指明它是输出参数来的。 cmd.Parameters["@thename"].Direction=ParameterDirection.Output;//增加后,用output说明是输出参数。 inti=cmd.ExecuteNonQuery(); stringname=cmd.Parameters["@thename"].Value.ToString();//经过执行,存储过程返回了输出参数。 MessageBox.Show("命令完成"+name+"是所查记录","提示",MessageBoxButtons.OK,MessageBoxIcon.Information); con.Close(); }

套路就是:输出参数先声明,再赋值,再加入cmd的参数中,最后用cmd.ExecuteNonQuery()执行。

2.用AddWithValue:

privatevoidbtnothers_Click(objectsender,EventArgse) { SqlConnectioncon=getcon(); SqlCommandcmd=newSqlCommand(); cmd.Connection=con; cmd.CommandText="selbyid"; cmd.CommandType=CommandType.StoredProcedure; SqlParameterpara=newSqlParameter(); cmd.Parameters.AddWithValue("@id",Convert.ToInt32(txtid.Text.Trim()));//输入参数可以用addWithValue来格式化参数,但输出参数只能用Add cmd.Parameters.Add("@thename",SqlDbType.NVarChar,100).Direction=ParameterDirection.Output;//和下面一句不可顺序掉乱,否则会报错,先加入cmd中再指明它是输出参数来的。 con.Open(); inti=cmd.ExecuteNonQuery(); stringname=cmd.Parameters["@thename"].Value.ToString();//输出参数返回一个数值。 MessageBox.Show("命令完成"+name+"是所查记录","提示",MessageBoxButtons.OK,MessageBoxIcon.Information); con.Close(); }

3.用参数数组实现调用输入和输出参数的存储过程:

privatevoidbtnshuzu_Click(objectsender,EventArgse) { SqlConnectioncon=getcon(); SqlCommandcmd=newSqlCommand(); cmd.Connection=con; cmd.CommandText="selbyid"; cmd.CommandType=CommandType.StoredProcedure; SqlParameter[]para={newSqlParameter("@id",SqlDbType.Int)}; para[0].Value=Convert.ToInt32(txtid.Text.ToString().Trim()); cmd.Parameters.AddRange(para);//输入参数和输出参数分别加入到cmd.Parameter中。 cmd.Parameters.Add("@thename",SqlDbType.NVarChar,100).Direction=ParameterDirection.Output;//和下面一句不可掉乱,先增加再指明它是输出参数来的。 con.Open(); inti=cmd.ExecuteNonQuery(); stringname=cmd.Parameters["@thename"].Value.ToString(); MessageBox.Show("命令完成"+name+"是所查记录","提示",MessageBoxButtons.OK,MessageBoxIcon.Information); con.Close(); }

上述就是C#学习教程:C# 中用 Sqlparameter 的两种用法分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/908233.html

(0)
上一篇 2021年10月25日
下一篇 2021年10月25日

精彩推荐