C#操作SqlServer数据库(增、删、改、查)简单,好上手!

本文介绍了一个使用C#进行SQLServer数据库操作的程序,包括连接数据库、查看、增加、修改和删除数据等基本功能。通过单例模式管理数据库连接,使用SqlDataAdapter和SqlCommandBuilder实现数据的增删改查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不想复制代码,也可以直接百度网盘下载原文件
链接:https://pan.baidu.com/s/1F2179KEvqIArJKNfuajO4A
提取码:ur8q

 class Program
    {
         static void Main(string[] args)
        {
            SqlServerManager.Instance.Con();
            MainInterface();
            #region MyRegion
            //string constr = "Data Source=61.174.53.11;Initial Catalog=test;User ID=sa;password=jxbs-1934; Integrated Security=False";
            //SqlConnection connection = new SqlConnection(constr);
            //connection.Open();
            //Console.WriteLine("数据库连接成功!");
            //string sqlSearch = "select * from account";
            //SqlDataAdapter sqlData = new SqlDataAdapter(sqlSearch,connection);//适配器
            //DataSet dataSet = new DataSet();//填充
            //sqlData.Fill(dataSet,"table1");
            //SqlCommandBuilder SCB = new SqlCommandBuilder(sqlData);            
            //DataRowCollection rows=dataSet.Tables["table1"].Rows;//代表table表的每一行数据的集合
            //DataColumnCollection columns=dataSet.Tables["table1"].Columns;//代表table表的列名
            ////DataRow ds = dataSet.Tables["table1"].NewRow();
            ////ds[0] = "1002";
            ////ds[1] = "J";
            ////ds[2] = "1997";
            ////ds[3] = "湖北";
            ////ds[4] = "50";
            ////rows.Add(ds);
            ////sqlData.Update(dataSet, "table1");
            ////dataSet.AcceptChanges();           
            //Console.WriteLine("{0,-10}{1,-10}{2,-10}{3,-10}{4,-10}", columns[0], columns[1], columns[2], columns[3], columns[4]);
            //foreach (DataRow item in rows)
            //{
            //    Console.WriteLine("{0,-10}{1,-10}{2,-10}{3,-10}{4,-10}", item[0], item[1], item[2], item[3], item[4]);
            //}
            //Console.ReadKey(); 
            #endregion
        }     
        /// <summary>
        /// 监听是否按键
        /// </summary>   
        static void MainInterface()
        {
            Console.WriteLine("**************************");
            Console.WriteLine("*       1. 查看所有数据      *");
            Console.WriteLine("*       2. 查看某行数据      *");
            Console.WriteLine("*       3. 修改某行数据      *");
            Console.WriteLine("*       4. 删除某行数据      *");
            Console.WriteLine("*       5. 增加某行数据      *");
            Console.WriteLine("**************************");
            int code = 0;
            if (int.TryParse(Console.ReadLine(), out code))
            {
                switch (code)
                {
                    //用的委托,不想用委托,直接调用方法也行
                    case 1:
                        Carry(SqlServerManager.Instance.AExamine, null);
                        break;
                    case 2:
                        Carry(SqlServerManager.Instance.ALook, "请输入要查看的账号名字:");
                        break;
                    case 3:
                        Carry(SqlServerManager.Instance.FAmend, "请输入要修改的账号名字:","请输入新名字:","请输入新密码:");
                        break;
                    case 4:
                        Carry(SqlServerManager.Instance.FDele, "请输入要删除的账号名字:");
                        break;
                    case 5:
                        Carry(SqlServerManager.Instance.FAdd, "请输入新账号名字:", "请输入新账号密码:");
                        break;
                    default:
                        MainInterface();
                        break;
                }
            }
            else
            {
                Console.WriteLine("请选择对应数字的操作!");
                MainInterface();
            }
        }
        /// <summary>
        /// 执行增删改查
        /// </summary>
        static void Carry(Delegate @delegate,params string[] message)
        {
            if(message!=null)
            {
                for (int i = 0; i < message.Length; i++)
                {
                    Console.WriteLine(message[i]);
                    string mess= Console.ReadLine();
                    if(mess!="")
                    {
                        message[i] = mess;
                    }
                    else
                    {
                        Console.WriteLine("不能为空!");
                        i--;
                    }
                }
                Console.WriteLine(@delegate.DynamicInvoke(message) as string);
            }
            else
            {
                @delegate.DynamicInvoke();       
            }
            MainInterface();
        }
    }

自定义数据库操作类

  /// <summary>
    ///说明:test数据库,account表,第一个列为ID主键,一共有五列
    /// </summary>
    public class SqlServerManager
    {
        private static SqlServerManager _Instance;//单例
        private SqlConnection connection;//定义连接类
        private SqlDataAdapter sqlData;//定义适配器
        private DataSet dataSet;//定义数据表,用于填充从sqlserver下载的表
        private DataRowCollection rows;//定义行
        private DataColumnCollection columns;//定义列
        public Action<string> ALook;//委托,查看某行
        public Action AExamine;//委托,查看所有
        public Func<string, string, string, string> FAmend;//委托,修改某行
        public Func<string, string,string> FAdd;//委托,增加某行
        public Func<string, string> FDele;//委托,删除某行
        private int ID;//主键ID递增
        public SqlServerManager()
        {

        }
        public static  SqlServerManager Instance//单例
        {
                get
            {
                if(_Instance==null)
                {
                    _Instance = new SqlServerManager();
                }
                return _Instance;
            }
        }

        /// <summary>
        /// 连接数据库
        /// </summary>
        public void Con()
        {
            //两种连接语句均可
            string constr = "Data Source=127.0.0.1;Initial Catalog=test;User ID=sa;password=123456; Integrated Security=False";
            string constrTwo = "server=127.0.0.1;database=test;user=sa;pwd=123456";
            connection = new SqlConnection(constrTwo);//实例化连接类,并将连接语句作为参数
            connection.Open();//打开连接数据库
            Console.WriteLine("数据库连接成功!");//打印连接成功
            string sqlSearch = "select * from account";//sql语句查询,查询test数据库中的account表
            sqlData = new SqlDataAdapter(sqlSearch, connection);//实例化适配器,并将执行语句和连接类作为参数
            dataSet = new DataSet();//实例化数据表
            sqlData.Fill(dataSet, "table1");//将account表填充进
            SqlCommandBuilder SCB = new SqlCommandBuilder(sqlData);//定义此类,才能将虚拟表的数据更新到数据库中
            rows = dataSet.Tables["table1"].Rows;//代表table表的每一行数据的集合
            columns = dataSet.Tables["table1"].Columns;//代表table表的列名
            ALook += Look;//委托定义
            AExamine += Examine;//委托定义
            FAmend += Amend;//委托定义
            FAdd += Add;//委托定义
            FDele += Delete;//委托定义
            if(dataSet.Tables["table1"].Rows.Count>0)
            {
                ID = int.Parse(dataSet.Tables["table1"].Rows[dataSet.Tables["table1"].Rows.Count - 1][0].ToString());//读取这张表的最后一行的主键ID数据
            }       
        }
        /// <summary>
        /// 头显示
        /// </summary>
        private void HeadShow()
        {
            Console.WriteLine("{0,-10}{1,-10}{2,-10}{3,-10}{4,-10}", columns[0], columns[1], columns[2], columns[3], columns[4]);//显示表的列名
        }
        /// <summary>
        /// 查看行显示
        /// </summary>
        /// <param name="item"></param>
        private void LineShow(DataRow item)
        {
            Console.WriteLine("{0,-10}{1,-10}{2,-10}{3,-10}{4,-10}", item[0], item[1], item[2], item[3], item[4]);//显示每一行的数据
        }
        /// <summary>
        /// 查看所有
        /// </summary>
        private void Examine()
        {
            HeadShow();
            foreach (DataRow item in rows)
            {
                LineShow(item);
            }
        }
        /// <summary>
        /// 根据条件,查看某条数据
        /// </summary>
        /// <param name="name"></param>
        private void Look(string name)
        {
            HeadShow();
            foreach (DataRow item in rows)
            {
                string data = DisposeBlank(item);
                if (!string.IsNullOrEmpty(data) && data.Equals(name))
                {
                    LineShow(item);
                    return;
                }
            }
        }
        /// <summary>
        /// 修改某行
        /// </summary>
        private string Amend(string name,string newname,string newpassword)
        {
            foreach (DataRow item in rows)
            {
                string data = DisposeBlank(item);
                if (!string.IsNullOrEmpty(data) && data.Equals(name))
                {
                    DataRow dataRow = item;              
                    dataRow[2] = newname;
                    dataRow[3] = newpassword;
                    sqlData.Update(dataSet, "table1");
                    dataSet.AcceptChanges();
                    return "修改成功";
                }
            }
            return "修改失败,请输入正确的账号";
        }
        /// <summary>
        /// 增加一行数据
        /// </summary>
        /// <returns></returns>
        private string Add(string newname, string newpassword)
        {         
            try
            {
                DataRow dataRow = dataSet.Tables["table1"].NewRow();
                dataRow[0] = ++ID;
                dataRow[2] = newname;
                dataRow[3] = newpassword;
                rows.Add(dataRow);
                sqlData.Update(dataSet, "table1");
                dataSet.AcceptChanges();
                return "增加成功";
            }
            catch (Exception e)
            {
                newname = e.Message;
            }
            return newname;
        }
        /// <summary>
        /// 根据条件,删除某行数据
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        private string  Delete(string name)
        {
            foreach (DataRow item in rows)
            {
                string data=DisposeBlank(item);
                if (!string.IsNullOrEmpty(data)&&data.Equals(name))
                {
                    item.Delete();
                    sqlData.Update(dataSet, "table1");
                    dataSet.AcceptChanges();
                    return "删除成功";
                }
            }
            return "删除失败,请输入正确的账号";
        }
        /// <summary>
        /// 处理空格问题
        /// </summary>
        private string DisposeBlank(DataRow item)
        {           
            string data = item[2].ToString();
            string newdata = null;
            foreach (var value in data)
            {
                if(value.ToString()!=" ")
                {
                    newdata+= value;
                }
            }         
            return newdata;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值