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";
public SqlConnection
DataSqlConn()
{
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 属性 :取得参数值集合;
public SqlCommand
DataSql_Command()
{
SqlCommand commandb
= new SqlCommand();
commandb
.CommandType
= CommandType
.Text
;
commandb
.CommandText
= "select * from Student where Sno =@ID";
commandb
.Connection
= DataSqlConn();
commandb
.Parameters
.AddWithValue("@ID", 95001);
commandb
.ExecuteNonQuery();
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();
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 command
= new SqlCommand("select * from student;");
command
.Connection
= new SqlConnection(connStr
);
SqlDataAdapter adapter
= new SqlDataAdapter(command
);
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 scb
= new SqlCommandBuilder(adapter
);
Console
.WriteLine("SqlCommandBuilder实例的Insert命令: " + scb
.GetInsertCommand().CommandText
);
Console
.WriteLine("SqlCommandBuilder实例的Delete命令: " + scb
.GetDeleteCommand().CommandText
);
var dd
= dataTable
.GetChanges();
adapter
.Update(dataTable
.GetChanges());
dataTable
.AcceptChanges();
foreach (DataTable table
in dataSet
.Tables
)
{
foreach (DataRow row
in table
.Rows
)
{
Console
.WriteLine(row
[0] + ", " + row
[1] + ", " + row
[2] );
}
}
}
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";
public SqlConnection
DataSqlConn()
{
conn
= new SqlConnection(ConnStr
);
conn
.Open();
return conn
;
}
public SqlCommand
DataSql_Command()
{
SqlCommand commandb
= new SqlCommand();
commandb
.CommandType
= CommandType
.Text
;
commandb
.CommandText
= "select * from Student where Sno =@ID";
commandb
.Connection
= DataSqlConn();
commandb
.Parameters
.AddWithValue("@ID", 95001);
commandb
.ExecuteNonQuery();
return commandb
;
}
public SqlDataAdapter
DataAdapterMothod()
{
SqlDataAdapter dataAdapter
= new SqlDataAdapter();
dataAdapter
.SelectCommand
= DataSql_Command();
return dataAdapter
;
}
public void DataSetMothod()
{
DataSet ds
= new DataSet();
var adapter
= DataAdapterMothod();
adapter
.Fill(ds
);
conn
.Close();
}
public void CommandBuilderMothod()
{
SqlDataAdapter dataAdapter
= DataAdapterMothod();
SqlCommandBuilder commandBuilder
= new SqlCommandBuilder(dataAdapter
);
}
public void SqlDataReaderMothod()
{
SqlCommand command
= DataSql_Command();
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();
DataColumn dcId
= new DataColumn("Id",typeof(Int32
));
dcId
.AllowDBNull
= false;
dcId
.AutoIncrement
= true;
dcId
.AutoIncrementSeed
= 2;
dcId
.AutoIncrementStep
= 2;
DataColumn dcName
= new DataColumn("name", typeof(String
));
DataColumn dcAge
= new DataColumn("age", typeof(Int32
));
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
);
}
}
}