初学时的数据库操作辅助类

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; }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值