老程序员学C# ------实例一 登陆系统的数据库操作
来源:互联网 发布:手机免费刷会员软件 编辑:程序博客网 时间:2024/06/06 10:38
在项目中,我们通常会将数据库操作单独提出来,封装成为一个类,在需要调用的时候,直接使用该类的相关操作函数,这样减少代码的重复量,也便于程序员模块化构建和风格化的阅读。
这里,通过一个登陆对话框的实例来说明数据库操作封装的过程。相关代码可以在项目中直接使用。
首先,创建一个窗口项目,并将控件拖到窗口上创建如下窗口元素:
再添加一个窗口form2,如下:
在SQL2005数据库中建立数据库testDB,在该数据库下创建表TB_Login,相关字段信息如下:
其中ID字段的数据类型下,设置为自动更新项,方法是打开该列属性下的标示规范,选择是,增量选1。如图:
我们实现的目标是,程序运行form1窗口,显示登陆窗口,用户输入用户名和密码,如果与数据库中的对应字段相匹配,那么就显示form2,并在form2中显示相应的用户+“您已经成功登陆!”。 一,首先添加数据库操作类 在右边的解决方案资源管理器中,右键点击项目名称Login ,选择“添加…”,选择添加类,在弹出的对话框中,输入该类的名称:Cls_DataOp.cs。
双击创建的类Cls_DataOp.cs,开始创建代码。 首先加入两个数据库操作支持类库: using System.Data.SqlClient; using System.Data; 应为数据库连接字符串我们要在所有函数中都要调用,所以作为全局变量来声明: string str_conn = @"Data Source=(local)/SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=testDB;"; SqlConnection conn; 首先编写数据库连接函数: #region /// <summary> /// 打开数据库连接 /// </summary> public void SQL_conn() { try { conn = new SqlConnection(str_conn); conn.Open(); } catch { throw; } } #endregion 数据库操作一般有三种方式,一种是查询出某一个字段的值,一种是查询出结果是一个数据表,最后就是查询出数据数量。分别根据这三个目的,创建相应的函数。 一,获得查询到数据的第一行第一列数据内容 #region /// <summary> /// 获得查询到数据的第一行第一列数据内容 /// </summary> /// <param name="str_sql"></param> public object SQL_GetWord(string str_sql) { try { SQL_conn(); SqlCommand SQL_comd = new SqlCommand(str_sql, conn); return SQL_comd.ExecuteScalar(); } catch { throw; } finally { conn.Close(); } } #endregion 二,获得查询到数据的数据表 #region /// <summary> /// 获得查询到数据的数据表 /// </summary> /// <param name="str_sql"></param> /// <returns></returns> public DataTable SQL_GetTable(string str_sql) { try { SQL_conn(); SqlCommand SQL_comd = new SqlCommand(str_sql, conn); SqlDataAdapter SQL_adp = new SqlDataAdapter(SQL_comd); DataSet ds = new DataSet(); SQL_adp.Fill(ds); return ds.Tables[0]; } catch { throw; } finally { conn.Close(); } } #endregion 三,获得查询结果的数量 #region /// <summary> /// 获得查询结果的数量 /// </summary> /// <param name="str_sql"></param> /// <returns></returns> public int SQL_GetCount(string str_sql) { try { SQL_conn(); SqlCommand SQL_comd = new SqlCommand(str_sql, conn); return SQL_comd.ExecuteNonQuery(); } catch { throw; } finally { conn.Close(); } } #endregion 数据库操作类的所有成员创建完了,然后开始给Form1的登陆按钮和取消按钮创建事件。 首先创建“取消”按钮事件。 双击“取消”按钮控件,创建该控件的Click事件,代码如下: private void button2_Click(object sender, EventArgs e) { this.Close();//关闭窗口 } 双击“登陆”按钮,添加Click事件,代码如下: private void button1_Click(object sender, EventArgs e) { //数据库操作 Cls_DataOp Doper = new Cls_DataOp(); object pwd = Doper.SQL_GetWord("select user_pwd from TB_Login"); object name = Doper.SQL_GetWord("select user_name from TB_Login"); //判断用户名是否为空 if (textBox1.Text == "") { MessageBox.Show("用户名文本框为空!"); return; } else { //判断数据库中user_name字段是否为空 if (name == null) { MessageBox.Show("数据库中user_name字段为空!"); return; } else { //判断用户名是否与数据库中的user_name字段内容相等 if (textBox1.Text == name.ToString().Trim()) { MessageBox.Show("用户名确认正确!"); //判断密码框是否为空 if (textBox2.Text == "") { MessageBox.Show("密码文本框为空!"); return; } else { //判断数据库中密码字段是否为空 if (pwd == null) { MessageBox.Show("数据库中user_pwd字段为空 "); return; } else { //判断密码框与数据库中密码字段是否相等 if (textBox2.Text == pwd.ToString().Trim()) { MessageBox.Show("密码已经确认!"); //用户名确认,密码确认相等后,执行下面操作:打开form2窗口,并将用户名赋值给全局变量user_name. user_name = textBox1.Text.Trim(); Form2 frm2 = new Form2(); frm2.Show(); this.Hide(); return; } else { MessageBox.Show("密码错误,输入的密码与数据库里user_pwd字段内容不匹配!"); return; } } } } else { MessageBox.Show("用户名错误,输入的用户名与数据库里user_name字段内容不匹配!"); return; } } } } 这里定义一个全局变量作为参数传递。 public static string user_name = ""; 然后再form2窗口中,双击窗口,添加如下代码: private void Form2_Load(object sender, EventArgs e) { label2.Text = Form1.user_name; } 此时运行程序如图:
该实例完成。
- 老程序员学C# ------实例一 登陆系统的数据库操作
- 老程序员学C# ------操作DataGridView控件详解
- 老程序员学C# ------操作DataGridView控件详解
- 老程序员学C# (二)------连接SQL2005 数据库
- 老程序员学C# (二)------连接SQL2005 数据库
- 老程序员学C# ------ 窗口间的数据传递
- 老程序员学C# (一)------初识C# Visual Studio 2008
- C#数据库操作实例
- C#操作mysql数据库的代码实例
- C#操作mysql数据库的实例
- 跟老紫竹学Java-图书销售系统-数据库结构
- 一个老程序员的习惯(一)
- 一个老程序员对学弟学妹的一些忠告
- 一个老程序员对学弟学妹的一些忠告
- 一个老程序员对学弟学妹的一些忠告
- 一个简单的ADO.NET C# 数据库操作实例
- Hibernate 登陆实例的基本操作
- C#数据库操作数据库学习心得一
- 写下我的第一天
- android 屏幕分辨率问题
- MYSQL命令大全
- 8D简介
- 微软近期发布的三个新产品:SL PivotViewer SQL CE 4和Razor View Engine
- 老程序员学C# ------实例一 登陆系统的数据库操作
- serialVersionUID 用来表明类的不同版本间的兼容性
- lucene在eclipse下运行
- 【其他】【RQNOJ】排考场
- 行列转置 收藏
- 王爽汇编第八章节学习作业
- firefox js 调试工具下载
- SQl 转置矩阵
- 橙色旺市,蓝色霉稀