C#调用数据库中procedure_.NET调用存储过程实现查询例子
程序员文章站
2021-11-23 19:34:40
...
简介
我有这样一个需求、那就是要访问数据库中的一个储存过程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