SQLHelper学习笔记

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:17   1271   0

SqlHelper 类用于通过一组静态方法来封装数据访问功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。

SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法。SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader

在 SqlHelper 类中实现的每种方法都提供了一组一致的重载。这提供了一种很好的使用 SqlHelper 类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。在 SqlHelper 类中实现的方法包括:
ExecuteNonQuery。此方法用于执行不返回任何行或值的命令。这些命令通常用于执行数据库更新,但也可用于返回存储过程的输出参数。
ExecuteReader。此方法用于返回 SqlDataReader 对象,该对象包含由某一命令返回的结果集。
ExecuteDataset。此方法返回 DataSet 对象,该对象包含由某一命令返回的结果集。
ExecuteScalar。此方法返回一个值。该值始终是该命令返回的第一行的第一列。
ExecuteXmlReader。此方法返回 FOR XML 查询的 XML 片段。


使用App.config配置文件封装连接字符串,方便重复使用
--->添加App.conifg配置文件
--->Add : ConnectionString:
--->添加引用


SqlHelper 类中的专用实用程序函数包括:

AttachParameters:该函数用于将所有必要的 SqlParameter 对象连接到正在运行的 SqlCommand。
AssignParameterValues:该函数用于为 SqlParameter 对象赋值。
PrepareCommand:该函数用于对命令的属性(如连接、事务环境等)进行初始化。
ExecuteReader:此专用 ExecuteReader 实现用于通过适当的 CommandBehavior 打开 SqlDataReader 对象,以便最有效地管理与阅读器关联的连接的有效期。

思维导图

示例代码

namespace BILL
{

/// <summary>
/// 公有类:用户;
/// </summary>
public class User
{

/// <summary>
/// 公有属性:用户号;
/// </summary>
public string No
{
get;
set;
}

/// <summary>
/// 公有属性:密码;
/// </summary>
public string Password
{
get;
set;
}

/// <summary>
/// 公有属性:是否完成登录;
/// </summary>
public bool HasLoggedIn
{
get;
set;
}

/// <summary>
/// 公有属性:是否完成注册;
/// </summary>
public bool HasSignedUp
{
get;
set;
}

/// <summary>
/// 公有属性:是否雷同;
/// (即存在用户号雷同的用户)
/// </summary>
public bool IsDuplicate
{
get;
set;
}

/// <summary>
/// 公有属性:消息;
/// (用于返回验证结果)
/// </summary>
public string Message
{
get;
set;
}
}
}

namespace BILL
{
public partial class frm_SignUp : Form
{
/// <summary>
/// 私有字段:用户;
/// </summary>
private User User;

/// <summary>
/// 公有方法:构造函数;
/// </summary>
public frm_SignUp()
{
InitializeComponent();
this.StartPosition = FormStartPosition.CenterScreen;
this.User = new User();
}

/// <summary>
/// 私有方法:点击注册按钮;
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_SignUp_Click(object sender, EventArgs e)
{
if (this.txb_UserNo.Text.Trim() == "")
{
MessageBox.Show("用户号不能为空!");
this.txb_UserNo.Focus();
return;
}
if (this.txb_Password.Text.Trim() == "")
{
MessageBox.Show("密码不能为空!");
this.txb_Password.Focus();
return;
}
this.User.No = this.txb_UserNo.Text.Trim();
this.User.Password = this.txb_Password.Text.Trim();
UserBll.SignUp(this.User);
MessageBox.Show(this.User.Message);
}
}
}

/// <summary>
/// 公有静态方法:注册;
/// </summary>
/// <param name="user">用户</param>
/// <returns>是否注册成功</returns>
public static bool SignUp(User user)
{
int rowAffected1 = UserDal.Insert(user);
if (rowAffected1 == 1)
{
user.HasSignedUp = true;
user.Message = "注册成功。";
}
else
{
user.HasSignedUp = false;
if (user.IsDuplicate)
{
user.Message = "您注册的用户号已存在,请重新输入!\n";
}
user.Message += "注册失败!";
}
return user.HasSignedUp;
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP