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 [email protected]";//設定需要執行的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 [email protected]";//設定需要執行的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);
}
}
}