【C#】存储过程应用
来源:互联网 发布:淘宝限时抢购软件 编辑:程序博客网 时间:2024/04/28 17:30
前言
一直以来,写代码就是将sql语句写在了代码中,不过另一种形式也挺好玩的,把sql语句从代码中移到服务器端,也就是所说的存储过程。下面是用存储过程实现的登录Demo,算是笔记,如有错误,还请大神斧正。
代码展示
private void btnLogin_Click(object sender, EventArgs e){ string uid = txtUserName.Text.Trim(); string pwd = txtPassword.Text.Trim(); BLL.User user = new BLL.User(); DataTable result = user.SelectUser(uid,pwd); if (result.Rows.Count > 0) { this.DialogResult = DialogResult.OK; //登录成功 } else { MessageBox.Show("用户名或密码错误!","温馨提示"); }}
public class User{ SQLHelper sqlhelper = new SQLHelper(); /// <summary> /// 根据参数返回查询的一行用户信息 /// </summary> /// <param name="uid">用户名</param> /// <param name="pwd">密码</param> /// <returns></returns> public DataTable SelectUser(string uid,string pwd) { SqlParameter[] sp = new SqlParameter[] { new SqlParameter("@uid",uid), new SqlParameter("@pwd",pwd) }; return sqlhelper.ExecuteQuery("User_Select",sp,CommandType.StoredProcedure); }}
public class SQLHelper{ public SqlConnection conn = null; DataTable dt = new DataTable(); int res; public SQLHelper() { //引用配置文件内容 string connstr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; conn = new SqlConnection(connstr); } private SqlConnection GetConn() { if (conn.State == ConnectionState.Closed) { conn.Open(); } return conn; } /// <summary> /// 该方法执行带参数的增删改SQL语句或存储过程 /// </summary> /// <param name="cmdText">增删改SQL语句或存储过程</param> /// <param name="sp">参数集合</param> /// <param name="ct">命令类型</param> /// <returns></returns> public int ExecuteNonQuery(string cmdText, SqlParameter[] sp, CommandType ct) { using (SqlCommand cmd = new SqlCommand(cmdText, GetConn())) { cmd.CommandType = ct; cmd.Parameters.AddRange(sp); res = cmd.ExecuteNonQuery(); } return res; } /// <summary> /// 该方法执行不带参数的增删改SQL语句或存储过程 /// </summary> /// <param name="cmdText">增删改SQL语句或存储过程</param> /// <param name="ct">命令类型</param> /// <returns></returns> public int ExecuteNonQuery(string cmdText, CommandType ct) { using (SqlCommand cmd = new SqlCommand(cmdText, GetConn())) { cmd.CommandType = ct; res = cmd.ExecuteNonQuery(); } return res; } /// <summary> /// 该方法执行带参数的SQL查询语句或存储过程 /// </summary> /// <param name="cmdText">SQL查询语句或存储过程</param> /// <param name="sp">参数集合</param> /// <param name="ct">命令类型</param> /// <returns></returns> public DataTable ExecuteQuery(string cmdText, SqlParameter[] sp, CommandType ct) { SqlCommand cmd = new SqlCommand(cmdText, GetConn()); cmd.Parameters.AddRange(sp); cmd.CommandType = ct; using (SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { dt.Load(sdr); } return dt; } /// <summary> /// 该方法执行不带参数的SQL查询语句或存储过程 /// </summary> /// <param name="cmdText">SQL查询语句或存储过程</param> /// <param name="ct">命令类型</param> /// <returns></returns> public DataTable ExecuteQuery(string cmdText, CommandType ct) { SqlCommand cmd = new SqlCommand(cmdText, GetConn()); cmd.CommandType = ct; using (SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { dt.Load(sdr); } return dt; } }
存储过程
上面的代码中,没有sql语句,只有一个存储过程的名字“User_Select”,因为我们将sql语句写到了服务端存储过程中。存储过程的建立步骤:打开SQL Server,找到对应数据库—可编程性—存储过程—右击新建即可,内容如下所示:
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: 琚建飞-- Create date: 2017年4月23日18:50:57-- Description: 判断登录用户是否存在-- =============================================ALTER PROCEDURE [dbo].[User_Select]@uid varchar(10), @pwd varchar(10) ASBEGIN select * from Test where UserName=@uid AND Password=@pwdEND
注意:存储过程中的参数名要和代码中参数集合里的一致,否则会出错。
总结
上面只是写了一个带参数的查询Demo,根据用户名和密码来查询用户是否存在。可以看到SQLHelper中还有不带参数的查询、带参数的增删改和不带参数的增删改,其实它们是一致的,做了一个,其他三个就是照葫芦画瓢即可。
1 0
- 【C#】存储过程应用
- 存储过程在ASP.net(C#)中的应用
- 应用该存储过程
- 基本存储过程应用
- Mysql 存储过程应用
- Mysql 存储过程应用
- oracle存储过程应用
- 存储过程的应用
- 存储过程应用
- 存储过程应用实例
- 存储过程应用
- oracle 存储过程应用
- 触发器+存储过程应用
- 存储过程的应用
- C调用存储过程
- c调用存储过程
- C#--使用存储过程
- C#-调用存储过程
- Ubuntu 14.04系统中安装ROS Indigo
- maven打包 含src下的xml文件
- Win10Pcap驱动部分学习
- 自己编写的简单的线程池
- [BZOJ1856][SCOI2010]字符串
- 【C#】存储过程应用
- 在PC端利用fastboot将镜像烧录至开发板
- 锁
- 机器视觉光源知识总结(三)
- Kosaraju算法求有向强连通分量,缩点后是DAG的拓扑序列(从小到大)
- Linux CentOS 6.4 中安装JDK
- Android框架之路——FloatingActionButton使用与ToolBar进阶
- MyBatis,MySql存储过程分页查询
- EL表达式中的比较