C#调用数据库中procedure_.NET调用存储过程实现查询例子
2014-10-09 12:55:07  By: dwtedx

简介

我有这样一个需求、那就是要访问数据库中的一个储存过程procedure 、那么实现流程是这样的

首先实例化SqlConnection的存储过程、设置的connectionString和打开/关闭连接

实例的SqlCommand并设置类似的CommandType、CommandMode属性和添加参数

基于以上两个类、我创建了一个类、它结合了两个类、并从存储过程的返回值


源代码

要使用这个类请下载附件中的文件、并把类文件到您的Visual Studio的C#类库项目

让数据库类;导入CustomDatabase命名空间的顶部代码

using CustomDatabase;


ExecuteCommandScalar()

当你执行存储produre和存储过程只得到整数返回值此方法非常有用

ExecuteCommandNonQuery(OUT INT NumberRowsAffected)

在存储produre执行保存或更新命令、并得到受影响的数据库中的行数

ExecuteCommandReader(参考DataTable中oTable)

在存储过程中执行select命令、并得到了填充DataTable中的ref参数的资料中

代码示例、使用ExecuteCommandReader(ref DataTable oTable)

private int ManageCredential(ref string Token)
{
	DataTable oTable = new DataTable();
	int ReturnVal;
	using(Database db = new Database(connection_string))
	{
		try
		{
			db.Open();
			db.CommandText = "ManageCredential";
			db.AddParameter("@login_name", _username, DbType.String);
			db.AddParameter("@password", _password, DbType.String);
			db.AddParameter("@session_token", _session_token, DbType.String);               
			ReturnVal = db.ExecuteCommandReader(ref oTable);
			if (ReturnVal == 1)
			{
				if (oTable.Rows.Count > 0)
				{
					DataRow oRow = oTable.Rows[0];
					Token = oRow["session_token"].ToString();
				}
			}
		}
		finally
		{
			db.Close();
		}
		return ReturnVal;
	}
}


存储过程代码

ALTER PROCEDURE [dbo].[ManageCredential]
    @login_name VARCHAR(100),
    @password VARCHAR(100) =  NULL,
    @session_token VARCHAR(100) = NULL
AS
BEGIN
    IF EXISTS(SELECT * FROM tbl_name  WHERE login_name COLLATE
		Latin1_General_CS_AS = @login_name AND password COLLATE
		Latin1_General_CS_AS = @password)
		BEGIN  
			SELECT session_token FROM tbl_name WHERE login_name
			COLLATE Latin1_General_CS_AS = @login_name RETURN 1;
		END
	ELSE
		BEGIN
			RETURN 0;
		END
END


C#调用代码

using(Database db = new Database(
	ConfigurationManager
	.ConnectionStrings["con"]
	.ConnectionString){}
db.Open(); // Open the Connection
db.CommandText = "ManageCredential";
db.AddParameter("@login_name", _username, DbType.String);


最后我把整个DB操作类分享给大家链接: http://dwtedx.com/download.html?bdkey=s/193cWQ 密码: yn5f

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


猜你喜欢的

快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+