原始的数据库访问 ADO.net访问技术

ADO.net数据库访问技术基础知识

数据库操作基础

(一)数据库连接语句

connstring 连接字符串

属性具体说明
Data Source数据源 即 服务器名称
Initial最初的
Catalog目录
Initial Catalog最初的目录 表示数据库名称
User ID用户ID表示用户名称
Password密码
Server和Data Source可以互换 都表示服务器名称
database和Initial Catalog可以互换 都表示数据库名称
Persist Security Info表示是否保存安全信息

数据库最基本的连接语句为:
ConnectString=“Data Source=服务器名称 ;Initial Catalog=数据库名称;User ID=用户名称;Password=用户密码”
Server和Data Source 互换
database和Initial Catalog 互换
例如:
name="SqlServerDbContext" connectionString="Server=.;database=FZBIMS_SQ_V3;User ID=sa;pwd=XXXXXXX;App=EntityFramework;" providerName="System.Data.SqlClient"

Provider 供应商 用于指定哪一类数据库(数据源),可以为 SQLServer,MICROSOF ODBCfor Oracle、Micrsoft Access。(可以不用写)

Persist 坚持 Security 安全 Info 信息
Persist Security Info属性的意思是表示是否保存安全信息,其实可以简单的理解为"ADO在数据库连接成功后是否保存密码信息",
True表示保存,False表示不保存

数据库连接前

ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=XX;Data Source=.;Persist Security Info=false"

数据库连接成功后

ConnectString="Provider=MSDAORA.1;User ID=XX;Data Source=."


数据库连接前

ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=XX;Data Source=.;Persist Security Info=true"

数据库连接成功后

ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=xx;Data Source=."

ADO.net核心对象一 Connection(连接)对象

SqlConnection 用于创建与特定数据源的连接;

using System.Data.SqlClient;

 class DataBase
    {
        SqlConnection conn;
        private string ConnStr = "Data Source=.;Initial Catalog=MyStudent;User ID=sa;Password=68501507";//连接字符串
		/// <summary>
        /// 初始化连接对象
        /// </summary>
		public SqlConnection DataSqlConn()
        {
            //1、Connection (连接)对象方法
            // 方法1、SqlConnection connection = new SqlConnection(ConnStr);
            //方法2、
            conn = new SqlConnection(ConnStr);
            return conn;
        }
    }

ADO.net核心对象二 Command(命令)对象

SqlCommand的常用属性

CommandType = CommandType.Text; //CommandType的属性设置Text表示执行SQL语句;CommandType的属性设置StoredProcedure表示执行储存过程;
CommandText = "delete * from Student where Sno =95004";//CommandText属性:设置需要执行的SQL语句或着储存过程名;
Connection = DataSqlConn();//设置或获取SqlCommand的连接对象("DataSqlConn()是我自定义的方法")
commandb.Parameters 属性 :取得参数值集合;

 /// <summary>
        /// 命令对象
        /// </summary>
        /// <returns></returns>
        public SqlCommand DataSql_Command()
        {
            //1、SqlCommand (命令)对象方法
            SqlCommand commandb = new SqlCommand();//初始化一个SqlCommand 对象 
            commandb.CommandType = CommandType.Text;//设置为执行SQL语句;
            commandb.CommandText = "select * from Student where Sno =@ID";//设置需要执行的SQL语句;
            commandb.Connection = DataSqlConn();//设置或获取SqlCommand的连接对象
            commandb.Parameters.AddWithValue("@ID", 95001);

            //2、SqlCommand (命令)对象方法
            //String SqlStr = "delete from Student where Sno =95003";//设置需要执行的SQL语句;
            // SqlCommand commandb = new SqlCommand(SqlStr, DataSqlConn());//初始化一个SqlCommand 对象 

            //执行SQL语句并返回数据库受影响的行数
            commandb.ExecuteNonQuery();

            //删除对象,关闭连接
            //commandb = null;
            //conn.Close();
            //conn = null;
            
            return commandb;
        }
SqlCommand的常用方法

ExecuteNonQuery() —— 执行命令,返回值是受影响的记录行数。
ExecuteReader() —— 执行命令,返回一个类型化的SqlDataReader对象。该对象可以读取查询所得数据。
ExecuteScalar() —— 执行命令,返回结果集中的第一行第一列的值。

不要忘记
对数据库操作完毕后关闭数据库连接:conn.Close();

ADO.net核心对象三 DataReader(数据读取)对象

属性具体说明
FieldCount获取当前行中的列数
IsClosed判断DataReader对象是否关闭
HasRows如果DataReader中包含一行或者多行者为true,否者为false。
 public void SqlDataReaderMothod()
        {
            // 调用命令对象
            SqlCommand command = DataSql_Command();
            //使用command.ExecuteReader();生成DataReader实例
            SqlDataReader dataReader = command.ExecuteReader();
            //循环输出
            while (dataReader.Read())
            {
                Console.WriteLine(dataReader["Sno"]);
            }
            Console.Read();
            dataReader.Close();
        }

ADO.net核心对象四 DataAdapter(适配器)对象

DataAdapter对象的主要属性与方法:
属性具体说明
SelectCommand从数据库检查数据的Command对象
InsertCommand向数据源插入数据的Command对象
UpdateCommand向数据库更新数据的Command对象
DeleteCommand从数据库删除数据的Command对象
方法
Fill向DataSet中的表填充数据
Update向DataSet或者DataTable对象中变化的数据更新到数据库中

DataAdapter对象主要充当DataSet/DataTable与数据源的之间的桥梁,辅助功能。
(主要是数据的插入、更新、删除)。

ADO.net核心对象 SqlCommandBuilder(生成器)对象

        public void CommandBuilderMothod()
        {
            //第一步:获取数据库配置信息
            String connStr = "Data Source=.;Initial Catalog=MyStudent;User ID=sa;Password=********";
            //第二步:构建SqlCommand查询语句
            SqlCommand command = new SqlCommand("select * from student;");
            command.Connection = new SqlConnection(connStr);
            //第三步:创建SqlDataAdapter
            SqlDataAdapter adapter = new SqlDataAdapter(command);
            //第四步:创建DataSet和DataTable
            DataSet dataSet = new DataSet();
            DataTable dataTable = new DataTable();
            //第五步:填充数据
            adapter.Fill(dataTable);
            dataSet.Tables.Add(dataTable);
            //修改第一行数据中的姓名为陈语,并将其性别改为女
            dataTable.Rows[1]["sname"] = "陈语";
            dataTable.Rows[1]["ssex"] = "女";
            //删除第三行数据
            dataTable.Rows[0].Delete();
            //构建一个新的行,并添加到表中去
            dataTable.Rows.Add(new object[] {95008, "小明",  "男",18 });

            //创建SqlCommandBuilder对象,并绑定一个SqlDataAdapter对象
            SqlCommandBuilder scb = new SqlCommandBuilder(adapter);
            //或者
            //SqlCommandBuilder builder = new SqlCommandBuilder();
           // builder.DataAdapter = dataAdapter;

            //打印输出SqlCommandBuilder对象的增删改sql命令语句
            Console.WriteLine("SqlCommandBuilder实例的Insert命令: " + scb.GetInsertCommand().CommandText);
            Console.WriteLine("SqlCommandBuilder实例的Delete命令: " + scb.GetDeleteCommand().CommandText);

            //将有变动的行同步到数据库中
            var dd = dataTable.GetChanges();//查看受影响的数据行
            adapter.Update(dataTable.GetChanges());
            //保存修改
            dataTable.AcceptChanges();
            //下面是一个遍历输出datatable中的数据
            foreach (DataTable table in dataSet.Tables)
            {
                foreach (DataRow row in table.Rows)
                {
                    Console.WriteLine(row[0] + ", " + row[1] + ", " + row[2] );//+ ", " + row[3]
                }
            }
        }

DataSet对象与DataTable对象

DataSet对象与DataTable对象自行查找
这里就不写了啦

DataSet对象常见方法
属性具体说明
SelectCommand从数据库检查数据的Command对象
InsertCommand向数据源插入数据的Command对象
UpdateCommand向数据库更新数据的Command对象
DeleteCommand从数据库删除数据的Command对象

总体演示代码查看


namespace StudentTest.DB
{
    class DataBase
    {
        SqlConnection conn;
        private string ConnStr = "Data Source=.;Initial Catalog=MyStudent;User ID=sa;Password=68501507"; //连接字符串

        /// <summary>
        /// 初始化连接对象
        /// </summary>
        public SqlConnection DataSqlConn()
        {
            //1、Connection (连接)对象方法
            // 方法1、SqlConnection connection = new SqlConnection(ConnStr);
            //方法2、
            conn = new SqlConnection(ConnStr);
            conn.Open();
            return conn;
        }
        /// <summary>
        /// 命令对象
        /// </summary>
        /// <returns></returns>
        public SqlCommand DataSql_Command()
        {
            //1、SqlCommand (命令)对象方法
            SqlCommand commandb = new SqlCommand();//初始化一个SqlCommand 对象 
            commandb.CommandType = CommandType.Text;//设置为执行SQL语句;
            commandb.CommandText = "select * from Student where Sno =@ID";//设置需要执行的SQL语句;
            commandb.Connection = DataSqlConn();//设置或获取SqlCommand的连接对象
            commandb.Parameters.AddWithValue("@ID", 95001);

            //2、SqlCommand (命令)对象方法
            //String SqlStr = "delete from Student where Sno =95003";//设置需要执行的SQL语句;
            // SqlCommand commandb = new SqlCommand(SqlStr, DataSqlConn());//初始化一个SqlCommand 对象 

            //执行SQL语句并返回数据库受影响的行数
            commandb.ExecuteNonQuery();

            //删除对象,关闭连接
            //commandb = null;
            //conn.Close();
            //conn = null;
            
            return commandb;
        }
        /// <summary>
        /// 适配器对象
        /// </summary>
        /// <returns></returns>
        public SqlDataAdapter DataAdapterMothod()
        {
            //SQL语句
            // string StrSql = "select * from Student where Sno =95001";

            //创建DataAdapter(适配器)对象
            //SqlDataAdapter dataAdapter = new SqlDataAdapter(StrSql, DataSqlConn());
            //创建DataAdapter(适配器)对象 方法二
            SqlDataAdapter dataAdapter = new SqlDataAdapter();
            dataAdapter.SelectCommand = DataSql_Command();
            //dataAdapter.UpdateCommand
            return dataAdapter;
        }

        public void DataSetMothod()
        {
            //创建DataSet对象 (DataSet对象是以XML格式的数据在内存中的驻留)
            DataSet ds = new DataSet();
            
            //调用SqlDataAdapter对象
            var adapter = DataAdapterMothod();//DataAdapterMothod()是自定义的一个获取SqlDataAdapter对象的方法;
            //填充数据到DataSet对象 
            adapter.Fill(ds);
            conn.Close();
        }
        public void CommandBuilderMothod()
        {
            //获取SqlDataAdapter 对象
            SqlDataAdapter dataAdapter = DataAdapterMothod();
            //创建命令生成器
            SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
            
        }
        public void SqlDataReaderMothod()
        {
            // 调用命令对象
            SqlCommand command = DataSql_Command();
            //使用command.ExecuteReader();生成DataReader实例
            SqlDataReader dataReader = command.ExecuteReader();
            //循环输出
            while (dataReader.Read())
            {
                Console.WriteLine(dataReader["Sno"]);
            }
            Console.Read();
            dataReader.Close();
        }
        public void DataTableOrDataSet()
        {
            DataSet ds = new DataSet();

            DataTable dt = new DataTable();
            //创建一个名称为Id,类型为int32的列
            DataColumn dcId = new DataColumn("Id",typeof(Int32));
            //设置属性不允许为空
            dcId.AllowDBNull = false;
            //设置自动递增
            dcId.AutoIncrement = true;
            //设置初始值为2
            dcId.AutoIncrementSeed = 2;
            //设置递增值2
            dcId.AutoIncrementStep = 2;
            //创建数据行

            //创建一个名称为name,类型为String的列
            DataColumn dcName = new DataColumn("name", typeof(String));
            //创建一个名称为age,类型为int32的列
            DataColumn dcAge = new DataColumn("age", typeof(Int32));

            //添加列到DataTable
            dt.Columns.Add(dcName);
            dt.Columns.Add(dcAge);

            DataRow row = dt.NewRow();

            row["name"] = "老大";
            row["age"] = 20;
            //添加列
            dt.Rows.Add(row);
            //添加表
            ds.Tables.Add(dt);
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值