----------------------
ASP.Net+Android+IO开发S、
.Net培训、期待与您交流! ----------------------
• 常用的连接类
• Connection类表示与数据源之间的连接。
• Command类表示对数据库的查询、对存储过程的调用或返回特定表内 容的直接请求。
• DataReader类用于以最快的速度检索并检查查询所返回的行。
• Transaction类用于执行事务的类。 • DataAdaprer类连接类与非连接类的桥梁,从数据源填充DataSet并解 析更新。
• 常用的非连接类
• DataTable类表在内存中的缓存。
• DataRow类DataTable对象中的所有记录。
• DataSet类数据库在内存中的缓存。不仅包含表,而且包含表之间的关 系、视图等。
SqlConnection类 与Microsoft SQL Server数据库进行通信的类
– 创建连接字符串 连接字符串由一系列用分号隔开的名称-值对组成。
Data Source= .\SQLExpress;Initial Catalog=Northwind;Integrated Security=True
使用连接字符串(SqlClient) Data Source 要连接的SQL Server实例的名称或网址。 Initial Catalog 指定要访问的数据库。 User ID和Password 登录数据库的用户名和密码。 Integrated Security 是否使用Windows验证用户登录。
示例1: Data Source = .\SQLExpress;Initial Catalog = Northwind;User ID = sa;Password = 123;
示例2: Data Source = .\SQLExpress;Initial Catalog = pubs;Integrated Security = True;
– 生成SqlConnection对象;
String connectionString= @“Data Source = .\SQLExpress;…”;
SqlConnection connection = new SqlConnection(connectionString);
– 打开SqlConnection对象
connection.Open();
SqlCommand类 用于执行查询的类。
– SqlCommand常用的方法
• ExecuteReader() 将查询结果返回到SqlDataReader对象中;
DataReader一直和数据库保持连接,直到被显式关闭;
使用Command对象而不是DataAdapter对象来创建DataReader对象;
string CommandText = "select * from PHOTO_ALBUMS"; SqlCommand cmd = new SqlCommand(CommandText, connection); cmd.Connection.Open(); //打开连接; SqlDataReader sdr = cmd.ExecuteReader();
• ExecuteScalar() 执行查询,并返回查询结果集中的第一行第一列; 注意:ExecuteScalar 一般返回一个Object类型,因此要进行类型转换。
string CommandText = "select count(*) from PHOTO_ALBUMS"; SqlCommand command = new SqlCommand(CommandText, connection); command.Connection.Open(); //打开连接; string NoOne = (int)command.ExecuteScalar();
• ExecuteNonQuery() 用来执行INSERT、UPDATE、DELETE和其他没有返回值的SQL命令; 当使用INSERT、UPDATE、DELETE时,ExecuteNonQuery返回被命令影响的行数。对所 有其他命令,返回-1。
string CommandText = "insert into PHOTO_ALBUMS(ALBUMNAME,DESCRIPTION,BUILDDATE) values('海南风景','好美呀! ','" + DateTime.Now + "')“; SqlCommand cmd = new SqlCommand(CommandText, connection); cmd.Connection.Open(); //打开连接; int RownumEffect = cmd.ExecuteNonQuery();
DataSet 与 DataReader 的区别
DataSet
1. 创建数据库连接
2. 在DataAdapter中保存查 询
3. 使用Fill方法填充DataSet
4. 创建数据视图
5. 把数据视图绑定到列表绑 定控件
DataReader
1. 创建数据库连接
2. 打开数据库连接
3. 在SqlCommand中保存查询
4. 使用ExecuteReader方法填充 DataReader
5. 为每条记录调用Read 方法, 调用 Get方法取得字段
6. 手工显示数据
7. 关闭DataReader 和连接
使用ADO.NET访问数据库
using
System
;
using
System
.
Data
;
using
System
.
Configuration
;
using
System
.
Web
;
using
System
.
Web
.
Security
;
using
System
.
Web
.
UI
;
using
System
.
Web
.
UI
.
WebControls
;
using
System
.
Web
.
UI
.
WebControls
.
WebParts
;
using
System
.
Web
.
UI
.
HtmlControls
;
using
System
.
Data
.
SqlClient
;
public
partial
class
_Default
:
System
.
Web
.
UI
.
Page
{
protected
void
Page_Load
(
object
sender
,
EventArgs
e
)
{
}
protected
void
Button1_Click
(
object
sender
,
EventArgs
e
)
{
string
connectionString
=
@"
Data Source=.\sqlexpress;Initial Catalog=demo;Integrated Security=True
"
;
SqlConnection
connection
=
new
SqlConnection
(
)
;
connection
.
ConnectionString
=
connectionString
;
string
CommandText
=
"
select * from Employee where LoginName ='
"
+
TBUsername
.
Text
+
"
'
"
;
SqlCommand
cmd
=
new
SqlCommand
(
CommandText
,
connection
)
;
try
{
cmd
.
Connection
.
Open
(
)
;
//打开连接;
SqlDataReader
sdr
=
cmd
.
ExecuteReader
(
)
;
while
(
sdr
.
Read
(
))
//读取记录,每次读取一行
{
string
UserName
=
sdr
[
"
LoginName
"
]
.
ToString
(
)
;
tring
Password
=
sdr
[
"
Password
"
]
.
ToString
(
)
;
string
Password0
=
TBPassword
.
Text
;
if
(
Password
==
Password0
)
{
Session
[
"
uid
"
]
=
UserName
;
Session
[
"
name
"
]
=
TBPassword
.
Text
;
Response
.
Redirect
(
"
index.aspx
"
)
;
}
else
{
Response
.
Redirect
(
"
login.aspx
"
)
;
}
}
sdr
.
Close
(
)
;
}
catch
(
Exception
ex
)
//捕获异常
{
Console
.
WriteLine
(
ex
.
Message
)
;
}
}
}