ADO.net学习笔记大全

来源:互联网 发布:mysql 字段添加字符串 编辑:程序博客网 时间:2024/05/17 05:07
1. net 的四个核心的对象

Connection 建立与特定数据源的连接 Command 对数据源执行命令 DataReader 从数据源中读取只进且只读的数据流 DataAdapter 将数据填充到DataSet中去 包含在System.Data.SqlClient命名空间中

2.Ole DB.net的核心对象

OleDbConnection、OleDbCommand、OleDbDataReader和OleDbDataAdapter 这4个对象包含在System.Data.OleDb命名控件中,需要将这个命名空间引入到文件中 目前主要用来访问Access、Foxpro等简单的数据源。

3 Oracle DB .NET

对应Oracle DB .NET的4个核心对象分别是:OracleConnection、OracleCommand、OracleDataReader和OracleDataAdapter。这4个对象包含在System.Data.OracleClient命名控件中,需要将这个命名空间引入到文件中。

目前ADO.NET1.1带Oracle DB.NET数据提供程序只支持Oracle以上版本,对于其他的Oracle版本还需要到Microsoft网站下载驱动程序。

4.ODBC .NET
对应ODBC .NET的4个核心对象分别是:OdbcConnection、OdbcCommand、OdbcDataReader和OdbcDataAdapter。这4个对象包含在System.Data.Odbc命名控件中,需要将这个命名空间引入到文件中。

通过ODBC建立的数据源都可以通过ODBC.NET数据提供程序访问。

5.DataSet

ADO.NET的核心组件是DataSet,内部用XML描述数据,具有平台无关性。DataSet中常用的对象是DataTable和DataRow等等。



DataSet通过DataAdapter对象从数据源得到数据,DataAdapter是连接DataSet和数据库的一个桥梁,因此命名为:“数据适配器”。

6.使用Connection对象

=new OleDbConnection();

Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"+

"Data Source="+Server.MapPath("person.mdb");

Conn.Open();

Message.Text=Conn.State.ToString();

Conn.Close();

7.使用Connection对象的构造函数

;

=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+

"Data Source="+Server.MapPath("person.mdb"));

8.使用Connection对象连接SQL Server数据库

;

=new SqlConnection("server=localhost;database=pubs;uid=sa;pwd=''");

Conn.Open();

Message.Text=Conn.State.ToString();

Conn.Close();

9.Command对象

建立数据连接以后,利用Command对象来执行命令并从数据源返回结果。

Command对象常用的构造函数包括两个参数,1个是要执行的SQL语句,另一个是已经建立的Connnection对象,基本语法是:



OleDbCommand Comm=new OleDbCommand("select * from grade",)

10.使用ExecuteRader方法

=new OleDbConnection();

Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"+

"Data Source="+Server.MapPath("person.mdb");

Conn.Open();

string sql="select * from grade";

if (mytext.Text!="")

sql="select * from grade where 姓名 like '%"+mytext.Text+"%'";

Message.Text=sql;

OleDbCommand Comm=new OleDbCommand(sql,);

OleDbDataReader dr=Comm.ExecuteReader();

dg.DataSource=dr;

dg.DataBind();

Conn.Close();

11.程序中最关键的是如何将变量加到SQL语句中去的格式



程序中最关键的是如何将变量加到SQL语句中去。“SQL = ”Select * from grade where 姓名 like ‘%“ + str + ”%’“”语句中str是变量,要得到正确的格式只要按照下面的两个步骤进行操作。



(1)写出正确的SQL语句,SQL =" Select * from grade where 姓名 like '%敏%'",因为姓名是文本型变量,所以必须加上单引号,在SQL语句中,用单引号表示字符型变量。

(2)确定要替换的变量,这里是要将“敏”替换成变量Key。替换的规则是:删除“敏”字,在原字符串“敏”的位置,首先加上两个双引号,然后在两个双引号之间加上两个加号,最后将变量加到两个加号中间。

12.使用ExecuteScalar方法(返回首行首列)

=new OleDbConnection();

Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"+

"Data Source="+Server.MapPath("person.mdb");

Conn.Open();

String strSQL="select avg(数学) from grade";

OleDbCommand Comm=new OleDbCommand(strSQL,);

Double d=(Double)Comm.ExecuteScalar();

Message.Text="所有人数学的平均成绩为"+d.ToString()+"分";

Conn.Close();

13.使用Like子句实现模糊查询

=new OleDbConnection();

Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"+

"Data Source="+Server.MapPath("person.mdb");

Conn.Open();

string sql="select * from grade";

if (mytext.Text!="")

sql="select * from grade where 姓名 like '%"+mytext.Text+"%'";

Message.Text=sql;

OleDbCommand Comm=new OleDbCommand(sql,);

OleDbDataReader dr=Comm.ExecuteReader();

dg.DataSource=dr;

dg.DataBind();

Conn.Close();



14.使用ExecuteNonQuery方法执行Insert语句

=new OleDbConnection();

Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"+

"Data Source="+Server.MapPath("person.mdb");

Conn.Open();

String strSQL="insert into grade (学号,姓名,数学) "+

"values (99,'小张',100)";

OleDbCommand Comm=new OleDbCommand(strSQL,);

Comm.ExecuteNonQuery();

Conn.Close();

Response.Write("操作成功!");

15 DataReader对象

取DataReader对象的数据,有两种方法:

1、通过和DataGrid等数据控件绑定,直接输出,

2、另一种方法是利用循环将其数据取出

=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+

"Data Source="+Server.MapPath("person.mdb"));

Conn.Open();

String strSQL="select * from grade";

OleDbCommand Comm=new OleDbCommand(strSQL,);

OleDbDataReader dr=Comm.ExecuteReader();

string html="<Table border=1>";

html+="<TR>";

html+="<TD><B>学号</B></TD>";

html+="<TD><B>姓名</B></TD>";

html+="<TD><B>数学</B></TD>";

html+="</TR>";

try{//读出每一条记录

while(dr.Read()) {

html+="<TR>";

html+="<TD>" + dr["学号"].ToString() + "</TD>";

html+="<TD>" + dr["姓名"].ToString() + "</TD>";

html+="<TD>" + dr["数学"].ToString() + "</TD>";

html+="</TR>";

}

html+="</Table>";

}

finally{//关闭链接

dr.Close();

Conn.Close();

}

Response.Write(html);

16.使用DataAdapter对象构造方法执行



=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+

"Data Source="+Server.MapPath("person.mdb"));

string sql="select * from grade";

Conn.Open();

OleDbDataAdapter da = new OleDbDataAdapter(sql, Conn);//执行SQL

DataSet ds = new DataSet();

da.Fill(ds, "grade");

dg.DataSource=ds.Tables["grade"].DefaultView;

dg.DataBind();

17.DataAdapter对象的SelectCommand属性

=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+

"Data Source="+Server.MapPath("person.mdb"));

string strSQL="select * from grade";

OleDbCommand Comm=new OleDbCommand(strSQL,);

OleDbDataAdapter da=new OleDbDataAdapter();

da.SelectCommand=Comm;

Conn.Open();

DataSet ds = new DataSet();

da.Fill(ds,"grade");

dg.DataSource=ds.Tables["grade"].DefaultView;

dg.DataBind();

Conn.Close();

18使用DataAdapter对象的InsertCommand属性

=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+

"Data Source="+Server.MapPath("person.mdb"));

string strInsertSQL = "INSERT INTO grade(学号,姓名,数学) VALUES(111,'盖茨',59)";

string strSelectSQL = "SELECT * FROM grade WHERE 学号=111";

string strUpdateSQL = "UPDATE grade SET 数学=60 WHERE 学号=111";

// 创建Command对象

OleDbCommand InsertComm = new OleDbCommand(strInsertSQL,);

OleDbCommand SelectComm = new OleDbCommand(strSelectSQL,);

OleDbCommand UpdateComm = new OleDbCommand(strUpdateSQL,);

// 创建DataAdapter对象da

OleDbDataAdapter da=new OleDbDataAdapter();

Conn.Open();

da.SelectCommand = SelectComm;

da.UpdateCommand = UpdateComm;

da.InsertCommand = InsertComm;

// 创建并填充DataSet

DataSet ds = new DataSet();

da.Fill(ds,"grade1");

da.InsertCommand.ExecuteNonQuery();

da.Fill(ds,"grade2");

da.UpdateCommand.ExecuteNonQuery();

da.Fill(ds,"grade3");

// 将DataSet绑定到DataGrid控件

dg1.DataSource=ds.Tables["grade1"].DefaultView;

dg2.DataSource=ds.Tables["grade2"].DefaultView;

dg3.DataSource=ds.Tables["grade3"].DefaultView;

dg1.DataBind(); dg2.DataBind(); dg3.DataBind();

// 关闭连接

Conn.Close();

}

</script>

DataGrid1:<ASPataGrid id="dg1" runat="server"/><BR>

DataGrid2:<ASPataGrid id="dg2" runat="server"/><BR>

DataGrid3:<ASPataGrid id="dg3" runat="server"/>


19.DataSet对象

DataSet封装在命名空间“Syste.Data”中。DataSet中可以包含任意数量的DataTable(数据表),且每个DataTable对应一个数据库中的数据表和视图。



通过DataAdapter的Fill方法,将表内容填充到DataSet对象中,而且可以填充多个表。利用别名来区分。比如“da.Fill(ds,"grade1");”的功能是将da对象中的数据填充到ds对象中,并起别名“grade1”,上面的程序说明了Fill方法的使用。

20.自动生成DataSet对象

DataSet myds = new DataSet();

DataTable mydt = new DataTable("Squares");

DataRow mydr;

mydt.Columns.Add(new DataColumn("数字",typeof(Int32)));

mydt.Columns.Add(new DataColumn("平方",typeof(Int32)));

for (int i = 0; i < 10; i++) {

mydr = mydt.NewRow();

mydr[0] = i;

mydr[1] = i * i;

mydt.Rows.Add(mydr);

}

myds.Tables.Add(mydt);

dg.DataSource = myds.Tables["Squares"].DefaultView;

dg.DataBind();}



21操作DataSet对象

=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+

"Data Source="+Server.MapPath("person.mdb"));

Conn.Open();

string strSQL="select * from grade;";

OleDbDataAdapter da=new OleDbDataAdapter(strSQL, );

DataSet ds = new DataSet();

da.Fill(ds,"grade");

DataTable dt = ds.Tables["grade"];

DataRow row = dt.NewRow();

row["学号"] = "199";

row["姓名"] = "小布什";

row["数学"] = 58;

dt.Rows.Add(row);

OleDbCommandBuilder cb = new OleDbCommandBuilder(da);

da.Update(ds,"grade");

dg.DataSource = ds.Tables["grade"].DefaultView;

dg.DataBind();

Conn.Close();



22

使用DataView对象

= new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+

"Data Source="+Server.MapPath("person.mdb"));

String strSQL = "select * from grade";

OleDbCommand Comm = new OleDbCommand(strSQL,);

OleDbDataAdapter da = new OleDbDataAdapter();

da.SelectCommand = Comm;

Conn.Open();

DataSet ds = new DataSet();

da.Fill(ds,"grade");

DataView dv = new DataView(ds.Tables["grade"]);

dv.RowFilter = " 数学 > 60";

dv.Sort = "学号 desc, 数学 DESC";

Response.Write("满足条件的记录有:" + dv.Count + "条");

dg.DataSource = dv;

dg.DataBind();

Conn.Close();



23使用DataView对象进行简单查询

=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+

"Data Source="+Server.MapPath("person.mdb"));

String strSQL = "select * from grade";

OleDbCommand Comm = new OleDbCommand(strSQL,);

OleDbDataAdapter da = new OleDbDataAdapter();

da.SelectCommand = Comm;

Conn.Open();

DataSet ds = new DataSet();

da.Fill(ds,"grade");

DataView dv = new DataView(ds.Tables["grade"],"", "姓名",

DataViewRowState.CurrentRows);

int rowIndex = dv.Find("小张");

if (rowIndex == -1)

Response.Write("没有找到!");

else

Response.Write(dv[rowIndex]["姓名"].ToString() +

dv[rowIndex]["数学"].ToString());

//dg.DataSource = dv;

dg.DataBind();

Conn.Close();

24 ADO.NET对象操作SQL Server数据库

ADO.NET中操作SQL Server的命名空间是:“System.Date.SqlClient”



主要包括:SqlConnection对象、SqlCommand对象、SqlDataReader对象、SqlDataAdapter对象。

建立SQL Server数据库表

use pubs

go

Create Table grade

(

学号 int Identity (100, 1),

性别 Varchar(30) CHECK(性别 in('男','女')),

姓名 Varchar(10),

语文 int default 0,

数学 int default 0,

英语 int default 0

)

添加测试数据记录

insert into grade values('男','小俞',100,80,70)

insert into grade values('女','小徐',90,80,60)

insert into grade values('男','小包',50,60,90)

insert into grade values('男','小王',79,90,50)

insert into grade values('男','小栗',89,90,91)

insert into grade values('女','小卢',90,91,92)

insert into grade values('男','小李',89,91,95)

使用ADO.NET对象

总体上,操作SQL Server的程序和操作Access的程序方法一致。只需要做3个地方的修改,就可以把操作Access数据库的程序改成操作SQL Server的程序。



(1)修改引入的命名空间。操作Access数据库使用的是“System.Data.OleDb”,改成“System.Data.SqlClient”。

(2)修改ADO.NET的对象。分别把OleDbConnection、OleDbCommand、OleDbDataReader和OleDbDataAdapter等对象修改成SqlConnection、SqlCommand、SqlDataReader和SqlDataAdapter等对象。

(3)修改Connection对象的数据库连接串。操作Access数据库一般用:

“"Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath("person.mdb");”

修改为SQL Server连接串:“"server=localhost;database=pubs;uid=sa;pwd=''"”。

调用SQL Server的存储过程

= new SqlConnection("server=localhost;database=pubs;uid=sa;pwd=''");

SqlCommand Comm = new SqlCommand("testProc",);

// 将命令类型设为存储过程

Comm.CommandType=CommandType.StoredProcedure;

Conn.Open();

SqlDataReader dr = Comm.ExecuteReader();

dg.DataSource = dr;

dg.DataBind();

Conn.Close();

}

调用存储过程的输入和输出参数

= new SqlConnection("server=localhost;database=pubs;uid=sa;pwd=''");

SqlCommand Comm = new SqlCommand("sp_CheckPass",);

// 将命令类型设为存储过程

Comm.CommandType=CommandType.StoredProcedure;

// 添加并给参数赋值

SqlParameter Parm = Comm.Parameters.Add("@CHKName", SqlDbType.VarChar, 12);

Parm.Value = "aa";

Parm = Comm.Parameters.Add("@CHKPass", SqlDbType.VarChar, 12);

Parm.Value = "aa";

Parm = Comm.Parameters.Add("@ISValid", SqlDbType.VarChar, 28);

Parm.Direction = ParameterDirection.Output;

Conn.Open();

SqlDataReader dr = Comm.ExecuteReader();

Response.Write(Comm.Parameters["@ISValid"].Value);

Conn.Close();
  

原创粉丝点击