C#操作数据库

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//操作SQL数据库必须引入此包
using System.Data.SqlClient;
//使用DataSet类必须引入此包
using System.Data;
namespace ConsoleApplication1
{
    class Program
    {
        private string sqlConnectionCommand = "server=localhost;database=testDB;uid=sa;pwd=sa";//"server=localhost;database=testDB;integrated security=SSPI";//Windows验证方式
        private string sqlSelectTable = "select id,name from table1";
        private string sqlDelCommand = "Delete From table1 Where id = 1";
        private string sqlUpdateCommand = "update table1 set name = '99' Where id = 2";



        static void Main(string[] args)
        {
            Program p1 = new Program();
            p1.testDBsetFun();
        }

        public void doSqlSelect()
        {
            SqlConnection sqlConnection = new SqlConnection(sqlConnectionCommand);
            //如果初始化构造函数不包含连接数据库信息,则可以用创建的对象的属性关联连接数据库信息
            //SqlConnection sqlConnection = new SqlConnection();
            //sqlConnection.ConnectionString = sqlConnectionCommand;

            SqlCommand sqlCommand = new SqlCommand(sqlSelectTable, sqlConnection);//建立一个接受SQL语句并可以执行返回结果的对象
            //如果初始化时没包含要执行的SQL语句和关联的数据库连接则可通过创建的对象的属性来关联
            //SqlCommand sqlCommand = new SqlCommand();//创建一个执行SQL语句类的对象
            //sqlCommand.Connection = sqlConnection;//关联连接数据库对象
            //sqlCommand.CommandText = sqlSelectTable1;//关联执行的SQL语句

            //在执行SQL语句前必须把连接打开
            sqlConnection.Open();

            //如果执行非查询语句(更新,插入等)用SqlCommand类ExecuteNonQuery();方法来执行,返回一个int型
            //sqlCommand.ExecuteNonQuery();

            //执行查询语句用SqlCommand类ExecuteReader();方法来执行。用SqlDataReader类对象接收执行的结果便于沥遍
            SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();

            //开始循环沥遍
            while (sqlDataReader.Read())
            {
                int id = (int)sqlDataReader["id"];//(int)sqlDataReader[0];//也可以根据查询结果列的序号0为第一列
                string name = (string)sqlDataReader["name"];//(string)sqlDataReader["name"];
                Console.WriteLine("ID = " + id + " , Name = " + name);
            }
            System.Console.WriteLine("Press any key to exit.");
            System.Console.ReadKey();

            sqlDataReader.Close();
            sqlCommand.Dispose();
            sqlConnection.Close();
        }

        void testDBsetFun()
        {
            SqlConnection sqlConnection = new SqlConnection(sqlConnectionCommand);
            SqlCommand sqlCommand = new SqlCommand(sqlSelectTable, sqlConnection);
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();//建立对虚拟表进行操作的对象
            sqlDataAdapter.SelectCommand = sqlCommand;//把SqlDataAdapter关联一个拥有查询语句的sqlCommand对象
            sqlConnection.Open();
            DataSet dsDataSet = new DataSet();//创建虚拟表对象
            sqlDataAdapter.Fill(dsDataSet, "Customers");//用SqlDataAdapter对象把刚关联的查询结果赋到虚拟表中,并赋一个指定表名"Customers"(任意起)
            sqlCommand.Dispose();
            sqlConnection.Close();

            dsDataSet.Tables["Customers"].Rows[0].Delete();//指明要在指定虚拟表中删除的索引行,表名也可换成指定表储存在dsDataSet中的索引值
            dsDataSet.Tables["Customers"].AcceptChanges();//执行对指定虚拟表指定索引行删除的动作(提交执行自加载此 dsDataSet 或上次调用 AcceptChanges() 以来对其进行的所有更改。)
            sqlDataAdapter.Update(dsDataSet, "Customers");//调用Update方法,以dsDataSet中指定表的数据更新数据库对应表但是放在AcceptChanges()方法下则不执行


            int a1 = dsDataSet.Tables[0].Rows.Count;//取得指定虚拟表的总行数
            int a2 = dsDataSet.Tables["Customers"].Columns.Count;//取得指定虚拟表的总列数
            int a3 = dsDataSet.Tables.Count;//取得指定虚拟表的总列数
            string a4 = dsDataSet.Tables["Customers"].Columns[0].ToString();//取得指定虚拟表的索引为0列的列名(字段名)
            //取得指定虚拟表的指定索引行指定列的值
            string val = dsDataSet.Tables["Customers"].Rows[1]["name"].ToString();//也可通过虚拟表中该列的索引来取值//string b = dsDataSet.Tables["Customers"].Rows[1][1].ToString();
            Console.WriteLine("RowsCount = " + a1 + " , val = " + val);
            System.Console.WriteLine("Press any key to exit.");
            System.Console.ReadKey();


        }

    }
}
原文地址:https://www.cnblogs.com/dreamhome/p/2493530.html