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

mac2024-05-30  44

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); } } }
最新回复(0)