c#使用数据库存储过程的基本方法
来源:互联网 发布:使命召唤ol 电鳗数据 编辑:程序博客网 时间:2024/05/29 16:08
在业务代码中,可以将sql语句写成数据库的存储,这样代码会非常简洁,输入也不容易出错。更重要的是,存储过程可以写入多条的语句,对于需要得到数据库操作结果的模块非常有用。比如下面,要插入一条记录到数据库的最后一行,并且返回结果(插入的行号),如果用sql语句,要分成两次查询:
ThisCommand.CommandText = "Insert into SmsOutSquence (Content, Terminal, State, UserId, SubmitTime) VALUES('" + smsContent + "','" + t + "','" + 0 + "','" + userId + "','" + nowTime + "')";
SqlDataReader ThisReader = ThisCommand.ExecuteReader();
ThisReader.Close();
ThisCommand.CommandText = "SELECT * FROM SmsOutSquence WHERE SmsId = (SELECT max(SmsID) FROM SmsOutSquence)";
ThisReader = ThisCommand.ExecuteReader();
非常麻烦。这个时候我们可以用存储过程来处理。
先要针对这个目的建立一个存储过程:
CREATE PROCEDURE CMPP30_SubmitNewSms
@smsContent varchar(140),
@t varchar(1100),
@userId varchar(100),
@nowTime datetime
AS
insert into SmsOutSquence
(Content, Terminal, State, UserId, SubmitTime)
VALUES(@smsContent,@t , 0 , @userId ,@nowTime)
SELECT @@IDENTITY as "smsIdentity"
GO
最后一行是通过系统变量IDENTITY得到新行的标识符。
然后在c#代码中,这样调用这个存储过程:
SqlConnection ThisConnection = new SqlConnection(@"Server=(local);Integrated Security=True;" + "DataBase=SmsServerDatabase");
ThisConnection.Open();
SqlCommand ThisCommand = ThisConnection.CreateCommand();
ThisCommand.CommandText = "CMPP30_SubmitNewSms";
ThisCommand.CommandType = System.Data.CommandType.StoredProcedure;
ThisCommand.Parameters.Add(new SqlParameter("@smsContent",System.Data.SqlDbType.VarChar));
ThisCommand.Parameters.Add(new SqlParameter("@t",System.Data.SqlDbType.VarChar));
ThisCommand.Parameters.Add(new SqlParameter("@userId",System.Data.SqlDbType.VarChar));
ThisCommand.Parameters.Add(new SqlParameter("@nowTime",System.Data.SqlDbType.DateTime));
ThisCommand.Parameters["@smsContent"].Value=smsContent;
ThisCommand.Parameters["@t"].Value= t;
ThisCommand.Parameters["@userId"].Value=userId;
ThisCommand.Parameters["@nowTime"].Value=nowTime;
SqlDataReader ThisReader = ThisCommand.ExecuteReader();
while (ThisReader.Read())
{
index = Convert.ToInt64(ThisReader["SmsIdentity"].ToString().Trim());
}
Console.WriteLine(index);
ThisReader.Close();
ThisConnection.Close();
要传递的参数要先定义,并传值给它。最后用executeReader可以返回操作的结果。因为存储过程将结果表现为一个新列smsIdentity,所以可以用thisRead["smsIdentity"]得到返回的结果。
- c#使用数据库存储过程的基本方法
- 存储过程的基本使用
- 调用存储过程并且使用返回值的基本方法
- 调用存储过程并且使用返回值的基本方法
- C# 使用存储过程访问数据库的完整例子
- asp.net 数据库存储过程使用 c#
- C#数据库入门-006:使用存储过程
- C#存储过程的使用
- C#中对数据库的基本操作(增删改以及调用存储过程)
- C# 数据库存储过程的讲解应用
- C#操作Mysql数据库的存储过程
- c#使用Oracle数据库执行多条查询语句,非存储过程方法
- oracle 存储过程的基本使用
- C#调用存储过程的通用方法
- C#调用Oracle存储过程的方法
- C#调用Oracle存储过程的方法
- C#调用Oracle存储过程的方法
- C#调用Oracle存储过程的方法
- 网站二级域名用.net 2.0实现方案
- GUI测试之对话框、消息框篇
- 图片的水印与缩略图
- 组件图
- 条款4:使用Conditional特性代替#if条件编译
- c#使用数据库存储过程的基本方法
- 有备无患 Linux服务器备份和恢复技巧
- 用T-SQL创建和删除SQL作业
- 2007.05.28 新需求
- 条款5:总是提供ToString()方法
- 怀念恩师陈省身先生——陈永川
- 集成的故事 - 动态数据迁移
- 从“雁行理论”想到的
- 类图