ADO.Net

1.添加对System.Data.SqlClient的引用

    后台代码中需要对命名空间System.Data.SqlClient进行引用,代码如下所示。  

using System.Data.SqlClient; 

2.创建SqlConnection对象 
    在程序代码中创建SqlConnection对象,并赋值连接字符串,代码如下所示。

SqlConnection con = new SqlConnection();  //创建连接对象
//设置连接字串
con.ConnectionString = "server=.;database=mydb;uid=sa;pwd=mypassword";

3.打开数据库连接
    配置完连接字符串后,就可以调用SqlConnection对象的Open()方法来打开数据库连接。代码如下所示。

con.Open(); 

 在应用程序几乎所有的页面或模块中都需要连接数据库,因此也就都需要使用连接字符串,所以通常会将连接字符串写到配置文件中,使用时通过.NET提供的配置管理类来读取,在需要修改的话只需要修改该配置文件一处即可,从而简化了开发的繁琐程度。 
     打开Web网站的配置文件web.config,查找<connectionStrings>标签 ,在其中添加如下内容。

<connectionStrings>
<add name="conn" 
connectionString="server=.;database=mydb;uid=sa;pwd=mypassword"/>
</connectionStrings> 

4..关闭数据库连接
    当对数据进行完操作后,在代码结束时需要关闭数据库连接,通过Close()方法即可将其关闭,代码如下所示。 

con.Close(); 

例子:

public partial class SqlConnectionDemo : System.Web.UI.Page
{
public static readonly string CONN_STR =
ConfigurationManager.
ConnectionStrings["conn"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
try
{
SqlConnection conn = new SqlConnection(CONN_STR);
conn.Open(); // 打开连接
Label1.Text = "连接成功";
conn.Close(); // 关闭连接
}
catch
{
Label1.Text = "连接失败";
}
}

=======================================================================

Command对象可以使用数据命令直接与数据源进行通信。
Command类是一个执行SQL语句和存储过程的类,通过它,可以实现对数据的添加、删除、更新、查询等操作。

Command对象提供了三种用于执行SQL语句的方法:
ExecuteReader():用于执行SELECT命令,并返回一个DataReader对象,使用DataReader可以以只读方式访问查询结果。
ExecuteNonQuery():用于执行非SELECT的命令,如INSERT、DELETE或者UPDATE命令,返回一个命令所影响的数据的行数。也可以用ExecuteNonQuery()方法来执行一些数据定义命令,如新建、更新、删除数据库对象(如表、索引等)。
ExecuteScalar():用于执行SELECT查询命令,返回数据中第一行第一列的值。这个方法通常用来执行那些用到COUNT()或者SUM()函数的SELECT命令。 

示例:演示ExecuteNonQuery()的使用方法 。

public partial class ExecuteNonQueryDemo : System.Web.UI.Page
{
public static readonly string CONN_STR 
= ConfigurationManager.ConnectionStrings["conn"]
.ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(CONN_STR))
{
String sql = "UPDATE users SET username = '姓名'";
conn.Open();
SqlCommand command = new SqlCommand(sql, conn);
Response.Write("操作影响了" + command.ExecuteNonQuery() 
+ "条记录");
}
}

示例:演示ExecuteScalar()的使用方法 。

public partial class ExecuteScalarDemo : System.Web.UI.Page
{
public static readonly string CONN_STR 
= ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(CONN_STR))
{
String sql = "SELECT COUNT(*) FROM users";
conn.Open();
SqlCommand command = new SqlCommand(sql, conn);
Label1.Text = "users表中有" + command.ExecuteScalar() + "条记录";
}
}
}

===================================================================

DataReader类被设计为产生只读,只进的数据流。
与DataSet相比,使用DataReader访问数据库的速度要快一些,并且能够使用较少的服务器资源。
DataReader具有如下特点:
快速的数据库访问 
只进和只读 
减少服务器资源 
自定义数据库管理 
手动连接管理  

protected void btnLogin_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(ConStrUrl); //创建连接对象
try
{
conn.Open(); //尝试打开连接
string username = tbUserName.Text.Trim();
string password = tbPassword.Text.Trim();


string sql = "select * from [users] where username='" + username + "'";


SqlCommand cmd = new SqlCommand(sql, conn);//创建Command对象
SqlDataReader dr = cmd.ExecuteReader();//创建DataReader对象


if (dr.HasRows)
{
while (dr.Read())
{
if (dr["password"].ToString() == password)
{
Response.Write("用户:" + dr["username"].ToString() + "登录成功!<hr/>");
}
else
{
Response.Write("登录失败:密码错误!<hr/>");
}
}
conn.Close(); //关闭连接
}
else
{
Response.Write("登录失败:用户不存在!<hr/>");
}
}
catch
{
Response.Write("登录失败:数据库连接失败!<hr/>");
}

DataAdapter是DataSet和数据源之间的一个适配器。在创建数据库连接后,可以使用DataAdapter对象对数据集DataSet进行填充。DataSet对象中缓存了检索结果,从而降低了应用程序和数据库之间的通信次数

DataSet是一个数据容器,将数据库中的数据拷贝一份放到了用户本地的内存中,供用户在不连接数据库的情况下读取数据,不仅充分利用了客户端资源,也大大降低了数据库服务器的压力。 
DataSet能够支持多表、表间关系、数据库约束等,与关系数据库的模型基本一致,从而能模拟出一个简单的数据库模型。 

DataTable是DataSet中的常用的对象,是数据库中表概念的映射。

DataTable table = new DataTable("mytable");//创建一个DataTable对象
table.CaseSensitive = false; //设置不区分大小写
table.MinimumCapacity = 100; //设置DataTable初始大小
table.TableName = "newtable";//设置DataTable的名称 

DataTable必须包含列。因此创建一个DataTable后,必须向其增加列。开发人员可以使用Columns集合的Add()方法向DataTable中增加列,代码如下所示。 

DataColumn colum = new DataColumn(); //创建一个DataColumn
colum.ColumName="id"; //设置列名
colum.DataType=typeof(int);//设置列的数据类型
table.Columns.Add(colum);//增加一列
colum = new DataColumn(); //再创建一个DataColumn
colum.ColumName="title";
colum.DataType=typeof(string);
table.Columns.Add(colum); 

DataRow表示是表中的数据行。可以使用DataRow对象向表中添加新的数据行,这一操作同数据库中的INSERT语句的概念类似。
插入一个新行,首先要声明一个DataRow类型的变量。例如

DataRow row = table.NewRow(); //使用DataTable的NewRow方法创建一个新DataRow对象 

通过使用索引或者列名来操作行中的字段 。例如:

row[0] = 1; //使用索引赋值列
row[1] = "datarow"; //使用索引赋值列

DataRow表示是表中的数据行。可以使用DataRow对象向表中添加新的数据行,这一操作同数据库中的INSERT语句的概念类似。
插入一个新行,首先要声明一个DataRow类型的变量。例如: 

DataRow row = table.NewRow(); //使用DataTable的NewRow方法创建一个新DataRow对象

通过使用索引或者列名来操作行中的字段 。例如:

row[0] = 1; //使用索引赋值列
row[1] = "datarow"; //使用索引赋值列

con.Open(); //打开连接
SqlDataAdapter daDept = new SqlDataAdapter("select * from users", con);
DataSet dsDept = new DataSet();
daDept.Fill(dsDept, "users");
DataTable table = dsDept.Tables["users"];
Response.Write("<table border='1' width='100%'>");
Response.Write("<tr>");
// 输出表的列名
for (int i = 0; i < table.Columns.Count; i++)
{
Response.Write("<th>");
Response.Write(table.Columns[i].ColumnName);
Response.Write("</th>");
}
Response.Write("</tr>");
//输出表中的数据
for (int i = 0; i < table.Rows.Count; i++)
{
DataRow row = table.Rows[i];//获取表中的行
//输出行记录
Response.Write("<tr>");
for (int j = 0; j < table.Columns.Count; j++)
{
Response.Write("<td>");
Response.Write(row[j]);//输出行中的字段值
Response.Write("</td>");
}

ADO.NET提供了基于.NET平台的数据访问方式
ADO.NET的核心对象有Connection、Command、DataReader、DataAdapter和DataSet
Connection对象表示与数据库的连接
Command用于对数据库执行命令并返回数据
DataReader提供读取数据的接口
DataAdapter提供连接DataSet和数据源的适配器
DataSet在内存中保存数据库返回的数据,并提供相应的内存数据管理操作



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值