Parameters.AddWithValue(“@参数”,value)方法

以前用command方法执行存储过程增加参数时,总是先用cmd.Parameters.Add方法来设置参数和参数类型,再用Parameters[0].Value来给参数赋值。以前的一个动作代码示例:

string strConn = "Data Source=.;Initial Catalog=HISDB;Integrated Security=True";

            using( SqlConnection conn = new SqlConnection(strConn))

            {

                conn.Open();

                SqlCommand cmd = new SqlCommand("AuditMessageInsert", conn);

                //设置命令类型为存储过程,没有设置的话会执行失败

                cmd.CommandType = CommandType.StoredProcedure;

                //设置参数名和类型

                cmd.Parameters.Add("@Target", SqlDbType.NChar);

                cmd.Parameters.Add("@Description", SqlDbType.NChar);

                cmd.Parameters.Add("@Actor", SqlDbType.NChar);

                cmd.Parameters.Add("@Time", SqlDbType.DateTime);

                cmd.Parameters.Add("@Computer", SqlDbType.NChar);

                //给参数赋值

                cmd.Parameters[0].Value = "ATarget";

                cmd.Parameters[1].Value = "Description";

                cmd.Parameters[2].Value = "Actor";

                cmd.Parameters[3].Value = DateTime.Now;

                cmd.Parameters[4].Value = "PC-Computer";

                cmd.ExecuteNonQuery();

            }

如果用Parameters.AddWithValue方法就不用这么麻烦了,可以直接加参数名和其值,不用再设置参数的类型,示例代码:

string strConn = "Data Source=.;Initial Catalog=HISDB;Integrated Security=True";

            using( SqlConnection conn = new SqlConnection(strConn))

            {

                conn.Open();

                SqlCommand cmd = new SqlCommand("AuditMessageInsert", conn);

               

                cmd.CommandType = CommandType.StoredProcedure;

               

             

                //增加参数:名称与类型 且与表中参数的顺序没关系

                cmd.Parameters.AddWithValue("@Actor", "Actor");

                cmd.Parameters.AddWithValue("@Target", "Target");

                cmd.Parameters.AddWithValue("@Description", "Description");

 

                cmd.Parameters.AddWithValue("@Computer", "Computer");

                cmd.Parameters.AddWithValue("@Time", DateTime.Now);

 

 

                cmd.ExecuteNonQuery();

            }

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
System.Data.Silverlight V2.0版本升级说明 一、升级说明 1、重写了一套DataSet、DataTable,自定义Xml序列化和反序列化方法; 2、优化了程序,引用该组建无需引用其它关联程序集; 3、增加DataTable与实体类集合的互转、DataTable转换成动态类型集合、DataTable直接绑定到控件; 4、增加事务处理功能; 5、感谢网友“尘世流浪汉”提出宝贵意见,也欢迎大家试用并提出更多建议! 二、新功能示例 1、DataTable新功能 try { //创建一个数据连接 DbConnection conn = new DbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|SoundEvents.mdb;"); //SQL Server无须做如下两步设置 //设置使用的数据访问程序集 conn.AssemblyName = "System.Data"; //设置数据工厂,这里是Oledb方式的数据工厂 conn.DbProviderFactory = "System.Data.OleDb.OleDbFactory"; //创建一个数据命令 DbCommandSyn cmd = new DbCommandSyn(); //设置命令的连接 cmd.Connection = conn; //设置SQL语句,可以是存储过程 cmd.CommandText = "SELECT [JtServerCode],[JtEventID],[JtEventName] FROM [JtEvents] WHERE [JtServerCode]=@JtServerCode"; //设置命令类型,一般SQL语句是Text,存储过程是StoredProcedure cmd.CommandType = DbCommandType.Text; //设置执行类型 cmd.ExecuteType = DbExecuteType.Reader; //添加一个参数,无参数可以不添加 cmd.Parameters.Add(new DbParameter("@JtServerCode", "jt01")); //执行命令,得到结果 DbCommandExecuteResult result = cmd.Execute(); if (!string.IsNullOrEmpty(result.ErrMsg))//首先判断ErrMsg是否有值,有表示执行过程发生错误 { MessageBox.Show("发生错误:" + result.ErrMsg); } else { //将DataTable直接绑定到控件 DataTable dt = result.ReaderResult; dataGrid1.ItemsSource = dt; //将DataTable转换成实体类集合后绑定到控件 List<HisEvent> hisEvents = result.ReaderResult.ToEntityList<HisEvent>(); dataGrid1.ItemsSource = hisEvents; //将DataTable转换成动态类型集合后绑定到控件 List<object> objList = result.ReaderResult.ToObjectList(); dataGrid1.ItemsSource = objList; } } catch (Exception ex) { MessageBox.Show("发生错误:" + ex.ToString()); } 2、事物示例 try { //创建一个数据连接 DbConnection conn = new DbConnection("Data Source=|DataDirectory|CSmsPlatThird.db;Pooling=true;FailIfMissing=false"); //设置使用的数据访问程序集 conn.AssemblyName = "System.Data.SQLite"; //设置数据工厂,这里是SQLite的数据工厂 conn.DbProviderFactory = "System.Data.SQLite.SQLiteFactory"; //创建一个数据命令 DbCommandSyn cmd = new DbCommandSyn(); //设置命令的连接 cmd.Connection = conn; //设置执行类型 cmd.ExecuteType = DbExecuteType.Transaction; //添加事务 TransactionItem trans1 = new TransactionItem(); trans1.CommandText = "INSERT INTO [T_Message] ([Mobile],[Content],[DateTime],[PlatFlag],[State]) VALUES (@Mobile,@Content,@DateTime,@PlatFlag,@State)"; trans1.CommandType = DbCommandType.Text; trans1.Parameters.AddWithValue("@Mobile", new Random().Next(10000000, 888888888).ToString()); trans1.Parameters.AddWithValue("@Content", "这是一条测试短信!"); trans1.Parameters.AddWithValue("@DateTime", DateTime.Now); trans1.Parameters.AddWithValue("@PlatFlag", "SZHK"); trans1.Parameters.AddWithValue("@State", true); cmd.Transaction.Add(trans1); TransactionItem trans2 = new TransactionItem(); trans2.CommandText = "INSERT INTO [T_Logger] ([Content],[DateTime],[PlatFlag]) VALUES (@Content,@DateTime,@PlatFlag)"; trans2.CommandType = DbCommandType.Text; trans2.Parameters.AddWithValue("@Content", "短信发送成功!"); trans2.Parameters.AddWithValue("@DateTime", DateTime.Now); trans2.Parameters.AddWithValue("@PlatFlag", "SZHK"); cmd.Transaction.Add(trans2); //执行命令,得到结果 DbCommandExecuteResult result = cmd.Execute(); if (!string.IsNullOrEmpty(result.ErrMsg))//首先判断ErrMsg是否有值,有表示执行过程发生错误 { MessageBox.Show("发生错误:" + result.ErrMsg); } else { if (result.TransactionResult) { MessageBox.Show("事务执行成功!"); } else { MessageBox.Show("事务执行失败!"); } } } catch (Exception ex) { MessageBox.Show("发生错误:" + ex.ToString()); } 三、技术交流 有任何问题可以加入唯一指定的专用QQ群153079750进行反馈交流,也欢迎加入笔者的另一个Silverlight技术群175213051进行交流。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值