using System;
using System.Collections.Generic;
using System.Linq;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
/// </summary>
/// 由蓝多封装的数据库操作类 由于是初学时写的,可能有诸多问题。请改正
/// </summary>
namespace SQLHelper
{
/// <summary>
/// 封装的数据操作类
/// </summary>
public class SQLHandle
{
private SqlConnection connection;
private SqlCommand command;
private SqlDataReader reader;
private SqlDataAdapter sda;
private string DataString;
/// <summary>
/// 以系统权限登录数据库
/// </summary>
/// <param name="fwqdz">服务器地址</param>
/// <param name="sjkm">数据库名</param>
public SQLHandle(string fwqdz, string sjkm)
{
this.DataString = string.Format("Data Source=" + fwqdz + ";Initial Catalog=" + sjkm + ";Integrated Security=True");
}
/// <summary>
/// 以账户登录数据库
/// </summary>
/// <param name="fwqdz">服务器地址,如果是本机则是.</param>
/// <param name="sjkm">数据库名</param>
/// <param name="zhm">账户名</param>
/// <param name="mm">对应的密码</param>
public SQLHandle(string fwqdz, string sjkm, string zhm, string mm)
{
this.DataString = string.Format("data source=" + fwqdz + ";initial catalog=" + sjkm + ";user id='" + zhm + "';pwd=" + mm);
}
/// <summary>
/// 打开数据库连接
/// </summary>
public void OpenConnection()
{
if (connection == null)
connection = new SqlConnection(this.DataString);
connection.Open();
}
/// <summary>
/// 从数据库读取一张表的数据,可以是多表查询
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public SqlDataReader ReadTable(string sql)
{
command = new SqlCommand(sql,connection);
return command.ExecuteReader();
}
/// <summary>
/// 关闭数据库连接
/// </summary>
public void CloseConnection()
{
if (connection != null)
connection.Close();
}
/// <summary>
/// 向数据库写入值或记录
/// </summary>
/// <param name="sql">要运行的SQL语句</param>
/// <returns></returns>
public int WriteValue(string sql)
{
command = new SqlCommand(sql, connection);
return command.ExecuteNonQuery();
}
/// <summary>
/// 查询数据库某个单元格的值
/// </summary>
/// <param name="sql">要运行的SQL语句</param>
/// <returns></returns>
public object SelectStringValue(string sql)
{
command = new SqlCommand(sql, connection);
return command.ExecuteScalar();
}
/// <summary>
/// 将数据源绑定到ComboBox控件上
/// </summary>
/// <param name="cbo">要绑定数据的ComboBox控件</param>
/// <param name="sql">要运行的SQL语句</param>
/// <param name="tabTitle">要查询的表名,如果为多表查询,任意字符串即可</param>
/// <param name="title">要显示的列标题:决定要哪一列作为显示的文本</param>
/// <param name="lisTitle">对应的文本储存的数值:决定每个项的数值</param>
/// <param name="Text">默认ComboBox的初始文本,通常值为“请选择”,如果为空字符串,则不设置初始选项</param>
/// <param name="DefaultValue">默认ComboBox的初始值,通常为-1</param>
/// <returns></returns>
public void BingComboBox(ComboBox cbo, string sql, string tabTitle, string DisPlayMember, string ValueMember, string DefaultText ="请选择",int DefaultValue = -1)
{
DataSet ds = new DataSet();
sda = new SqlDataAdapter(sql, connection);
sda.Fill(ds, tabTitle);
if (DefaultText.Length != 0)
{
DataRow newdr = ds.Tables[tabTitle].NewRow();
newdr[0] = DefaultValue;
newdr[1] = DefaultText;
ds.Tables[tabTitle].Rows.InsertAt(newdr, 0);
}
cbo.DataSource = ds.Tables[tabTitle];
cbo.DisplayMember = DisPlayMember;
cbo.ValueMember = ValueMember;
}
/// <summary>
/// 将数据源绑定到DataGrideView控件中
/// </summary>
/// <param name="dgv">要绑定的DataGrideView控件</param>
/// <param name="sql">要运行的SQL语句</param>
/// <param name="tabTile">要显示的表名,如果无表名,任意字符串即可</param>
/// <returns></returns>
public void BingDataGridView(DataGridView dgv, string sql, string tabTile)
{
DataSet ds = new DataSet();
sda = new SqlDataAdapter(sql, connection);
sda.Fill(ds, tabTile);
dgv.DataSource = ds.Tables[0];
}
}
/// <summary>
/// 测试类
/// </summary>
public class Test
{
static void Main(string[] args)
{
SQLHelper.SQLHandle sqldb = new SQLHandle(".", "myQQ");
sqldb.OpenConnection(); //打开数据库与应用程序的链接
int count = sqldb.WriteValue("insert into [Users] values('admin','admin')");
sqldb.CloseConnection(); //关闭数据库对应用程序的链接
Console.WriteLine("被影响的行数是:" + count.ToString());
sqldb.OpenConnection();
SqlDataReader sdr = sqldb.ReadTable("select * from [User]");
List<User> Users = new List<User>();
while (sdr.Read())
{
User u = new User(Convert.ToInt32(sdr["UID"]), sdr["UNAME"].ToString(), sdr["UPWD"].ToString());
Users.Add(u);
}
sqldb.CloseConnection();
Console.WriteLine("全部账号:");
Console.WriteLine("ID\tName\tPassWord");
foreach (User u in Users)
{
Console.WriteLine(string.Format(u.Id.ToString() + "\t" + u.Name + "\t" + u.PassWord));
}
Console.ReadLine();
}
}
/// <summary>
/// 测试类所用的用户对象
/// </summary>
public class User
{
public User(int id, string name, string pwd)
{
this.Id = id;
this.Name = name;
this.PassWord = pwd;
}
/// <summary>
/// 获取或设置 ID
/// </summary>
public int Id { get; set; }
/// <summary>
/// 获取或设置 用户名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 获取或设置 密码
/// </summary>
public string PassWord { get; set; }
}
}
初学时的数据库操作辅助类
最新推荐文章于 2025-04-30 14:41:06 发布