老程序员学C# ------实例一 登陆系统的数据库操作
2010-07-04 14:45
253 查看
在项目中,我们通常会将数据库操作单独提出来,封装成为一个类,在需要调用的时候,直接使用该类的相关操作函数,这样减少代码的重复量,也便于程序员模块化构建和风格化的阅读。
这里,通过一个登陆对话框的实例来说明数据库操作封装的过程。相关代码可以在项目中直接使用。
首先,创建一个窗口项目,并将控件拖到窗口上创建如下窗口元素:
再添加一个窗口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;
}
此时运行程序如图:
该实例完成。
这里,通过一个登陆对话框的实例来说明数据库操作封装的过程。相关代码可以在项目中直接使用。
首先,创建一个窗口项目,并将控件拖到窗口上创建如下窗口元素:
再添加一个窗口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;
}
此时运行程序如图:
该实例完成。
相关文章推荐
- js操作数据库实现注册和登陆的简单实例
- Expression构建DataTable to Entity 映射委托 sqlserver 数据库里面金额类型为什么不建议用float,实例告诉你为什么不能。 sql server 多行数据合并成一列 C# 字符串大写转小写,小写转大写,数字保留,其他除外 从0开始用U盘制作启动盘装Windows10系统(联想R720笔记本)并永久激活方法 纯CSS打造淘宝导航菜单栏 C# Winform
- C#数据库操作实例
- C# 三层架构 UI、BLL、DAL、Model操作数据库登录实例
- C#操作数据库基础实例《密码管理工具》
- C#连接操作 MySQL 数据库实例(使用官方驱动)
- C#操作数据库基础实例《密码管理工具》
- 关于C# Ado.NET连接数据库操作基本实例模板
- 程序员简单打造一个灵活智能的自动化运维系统C#实例程序
- C# 操作 access 数据库的实例代码
- C#连接操作 MySQL 数据库实例(使用官方驱动)
- jquery+ajax+C#实现无刷新操作数据库数据的简单实例
- 一个简单的ADO.NET C# 数据库操作实例
- C#操作VFP的dbf数据库文件实例
- jquery+ajax+C#实现无刷新操作数据库数据的简单实例
- 基于C#分步式聊天系统的在线视频直播系统 之 数据库操作基类 - 通用于Windows及Linux的Mono环境
- C#操作VFP的dbf数据库文件实例
- vc++学生选课系统 sql语句操作数据库 管理员登陆界面
- [转]提供一个C#编写的基类源码(用于操作WINDOWNS系统的服务)
- C# ASP.NET 走火入魔通用权限管理系统组件V3.2试用版下载地址【含数据库设计文档、使用手册】