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