Windows Phone 7手机开发、
.Net培训、期待与您交流! ADO.NET基础
ADO.NET是net framework提供的一堆用于向数据库提交sql语句的的类
sql server 的两种连接方式
windows 验证:这是一种受信连接 , 一般用于本机连接或者受信的局域网连接
sqlserver身份验证: 使用用户名和密码的方式来验证 sa用户,sqlserver的最高权限用户。
一般情况下,项目都有自己单独的数据库服务器,所以一般使用sqlserver身份验证的方式。而且sa
用户一般不要启用,单独建立数据库的专用首先账户比较安全。
1、 连接数据库
首先要创建连接字符串,基本格式如下
Data Source=.;Initial Catalog=test;User ID=sa;Password=123456
Data Source 指定我们需要连接的服务器的名称,如果是本机,可以使用.来代表,如果是单独的服务器,可能需要服务器名字或者IP地址。
Initial Catalog 指定我们需要连接的数据库的名称,因为一个服务器上可能有多个数据库,我们需要指定数据库名称来指定我们需要连接的数据库。
User ID 连接数据库使用的用户名。
Password 连接数据库使用的密码。
下面我们要使用ADONET中的一些类来与服务器通信,告知我们要连接
SqlConnection类 这个类是用来连接服务器的,实例化这个类,并提供一个连接字符串,就可以连接数据库了
using ( SqlConnection conn = new SqlConnection ( "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456" ) )
{
conn.Open ( );
}
using代码块的作用是自动关闭我们使用的资源,实际上是实现了IDisposible()接口的。
SqlConnection conn = new SqlConnection ( "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456" )
这串代码是创建一个连接对象,通过SqlConnection的构造函数,将连接字符串传入就可以得到一个数
据库的连接的实例。
conn.Open ( )打开数据库连接,打开后我们就可以对数据库进行进一步的操作了。
由于我们将连接对象放在了using代码块中,所以当我们的连接使用完毕后,系统会自动帮我们关闭数据库连接,以节约服务器的资源,但是如果我们没有将他放在using代码块中,就必须在连接使用完毕后手动的关闭,有两种方法
conn.Close ( );
conn.Dispose ( );
他们的区别在于,conn.Close ()方法,只是关闭了连接,我们还可以在后续的操作中继续打开这个连接,就像两地间的高速公路,close只是封闭了高速公路,只要再次打开,高速公路还是可以使用。
而conn.Dispose ()方法时销毁了连接 ,我们不能再次使用这个连接了,就像高速公路被拆掉了,如果我们需要再次连接数据库,那我们只能再修一条高速公路,即再次创建一个SqlConnection 实例。
实际上,susing{}代码块在结束后也是调用conn.Dispose ()方法的。
推荐使用using代码块的方式来释放连接。
2、向数据库发送sql语句并执行
using ( SqlConnection conn = new SqlConnection ( "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456" ) )
{
conn.Open ( );
using ( SqlCommand cmd = new SqlCommand() )
{
cmd.CommandText = "insert into T_user values ('aaa',100)";
cmd.Connection = conn;
cmd.ExecuteNonQuery ( );
}
}
SqlCommand是命令对象,它的作用是构建sql语句并发送给数据库服务器。
SqlCommand cmd = new SqlCommand()新建一个命令对象
cmd.CommandText = "insert into T_user values ('aaa',100)"; CommandText属性存储的就是我们需要执行的sql语句。
cmd.Connection = conn; Connection属性指示这个命令对象将被发送到哪个数据库连接对象。
cmd.ExecuteNonQuery ( );通知服务器执行sql语句,ExecuteNonQuery ( )方法时用来执行非查询语句的,也就是像insert update delete 等语句。它返回的是受影响的行数。
cmd.ExecuteReader()和cmd.ExecuteScalar()方法时用来执行select语句的,他们的不同之处在于返回值不同
cmd.ExecuteReader()方法返回的是一个SqlDataReader对象,也就是结果集,我们可以通过SqlDataReader的read()方法来读取结果集的每一行数据。
cmd.ExecuteScalar()方法返回的是结果集的第一行第一列的数据,是一个object对象。通常这个方法用来执行一些有且只有一行一列返回值的sql语句。
另外md.ExecuteScalar()方法还可以用于查看插入数据时,系统自动生成的自增长字段的值,我们必须改造下sql语句。
using ( SqlConnection conn = new SqlConnection ( "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456" ) )
{
conn.Open ( );
using ( SqlCommand cmd = new SqlCommand() )
{
cmd.CommandText = "insert into T_user(name,age) output inserted.id values ('aaa',100)";
cmd.Connection = conn;
int i = (int)cmd.cmd.ExecuteScalar ( );
}
}
insert into T_user(name,age) OUTPUT inserted.id values ('aaa',100)"语句的作用是插入一条数据,并且返回刚插入数据的id值,
注明,id是T_user表中的一个自增字段。
3、读取数据库返回的结果
using ( SqlConnection conn = new SqlConnection ( "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456" ) )
{
conn.Open ( );
using ( SqlCommand cmd = new SqlCommand() )
{
cmd.CommandText = "select * from T_user";
cmd.Connection = conn;
SqlDataReader reader = cmd.ExecuteReader ( );
while ( reader.Read() )
{
MessageBox.Show (reader.GetInt32(0)+reader.GetString(1)+reader.GetInt32(2));
}
}
}
注意,对于查询语句,我们使用的提交方法是cmd.ExecuteReader ( ),它返回一个SqlDataReader
类的对象,这个对象存储了我们的查询结果。
SqlDataReader reader = cmd.ExecuteReader ( ); 申明一个SqlDataReader 对象来存储结果。
SqlDataReader 类有一个Read()方法,用来依次读取当前数据的一行,如果有数据,返回true,如果没有数据了,返回false。所以我们可以用这个来作为循环条件来依次访问每行数据。
SqlDataReader 类 的方法GetInt32()和GetString()方法用来读取当前行的某一列的数据,参数为他们的列号,列号从0开始。
SqlDataReader 类的 GetOrdinal()方法时根据列名来获取列号的,参数为列名。
Windows Phone 7手机开发、 .Net培训、期待与您交流!
ADO.NET是net framework提供的一堆用于向数据库提交sql语句的的类
sql server 的两种连接方式
windows 验证:这是一种受信连接 , 一般用于本机连接或者受信的局域网连接
sqlserver身份验证: 使用用户名和密码的方式来验证 sa用户,sqlserver的最高权限用户。
一般情况下,项目都有自己单独的数据库服务器,所以一般使用sqlserver身份验证的方式。而且sa
用户一般不要启用,单独建立数据库的专用首先账户比较安全。
1、 连接数据库
首先要创建连接字符串,基本格式如下
Data Source=.;Initial Catalog=test;User ID=sa;Password=123456
Data Source 指定我们需要连接的服务器的名称,如果是本机,可以使用.来代表,如果是单独的服务器,可能需要服务器名字或者IP地址。
Initial Catalog 指定我们需要连接的数据库的名称,因为一个服务器上可能有多个数据库,我们需要指定数据库名称来指定我们需要连接的数据库。
User ID 连接数据库使用的用户名。
Password 连接数据库使用的密码。
下面我们要使用ADONET中的一些类来与服务器通信,告知我们要连接
SqlConnection类 这个类是用来连接服务器的,实例化这个类,并提供一个连接字符串,就可以连接数据库了
using ( SqlConnection conn = new SqlConnection ( "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456" ) )
{
conn.Open ( );
}
using代码块的作用是自动关闭我们使用的资源,实际上是实现了IDisposible()接口的。
SqlConnection conn = new SqlConnection ( "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456" )
这串代码是创建一个连接对象,通过SqlConnection的构造函数,将连接字符串传入就可以得到一个数
据库的连接的实例。
conn.Open ( )打开数据库连接,打开后我们就可以对数据库进行进一步的操作了。
由于我们将连接对象放在了using代码块中,所以当我们的连接使用完毕后,系统会自动帮我们关闭数据库连接,以节约服务器的资源,但是如果我们没有将他放在using代码块中,就必须在连接使用完毕后手动的关闭,有两种方法
conn.Close ( );
conn.Dispose ( );
他们的区别在于,conn.Close ()方法,只是关闭了连接,我们还可以在后续的操作中继续打开这个连接,就像两地间的高速公路,close只是封闭了高速公路,只要再次打开,高速公路还是可以使用。
而conn.Dispose ()方法时销毁了连接 ,我们不能再次使用这个连接了,就像高速公路被拆掉了,如果我们需要再次连接数据库,那我们只能再修一条高速公路,即再次创建一个SqlConnection 实例。
实际上,susing{}代码块在结束后也是调用conn.Dispose ()方法的。
推荐使用using代码块的方式来释放连接。
2、向数据库发送sql语句并执行
using ( SqlConnection conn = new SqlConnection ( "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456" ) )
{
conn.Open ( );
using ( SqlCommand cmd = new SqlCommand() )
{
cmd.CommandText = "insert into T_user values ('aaa',100)";
cmd.Connection = conn;
cmd.ExecuteNonQuery ( );
}
}
SqlCommand是命令对象,它的作用是构建sql语句并发送给数据库服务器。
SqlCommand cmd = new SqlCommand()新建一个命令对象
cmd.CommandText = "insert into T_user values ('aaa',100)"; CommandText属性存储的就是我们需要执行的sql语句。
cmd.Connection = conn; Connection属性指示这个命令对象将被发送到哪个数据库连接对象。
cmd.ExecuteNonQuery ( );通知服务器执行sql语句,ExecuteNonQuery ( )方法时用来执行非查询语句的,也就是像insert update delete 等语句。它返回的是受影响的行数。
cmd.ExecuteReader()和cmd.ExecuteScalar()方法时用来执行select语句的,他们的不同之处在于返回值不同
cmd.ExecuteReader()方法返回的是一个SqlDataReader对象,也就是结果集,我们可以通过SqlDataReader的read()方法来读取结果集的每一行数据。
cmd.ExecuteScalar()方法返回的是结果集的第一行第一列的数据,是一个object对象。通常这个方法用来执行一些有且只有一行一列返回值的sql语句。
另外md.ExecuteScalar()方法还可以用于查看插入数据时,系统自动生成的自增长字段的值,我们必须改造下sql语句。
using ( SqlConnection conn = new SqlConnection ( "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456" ) )
{
conn.Open ( );
using ( SqlCommand cmd = new SqlCommand() )
{
cmd.CommandText = "insert into T_user(name,age) output inserted.id values ('aaa',100)";
cmd.Connection = conn;
int i = (int)cmd.cmd.ExecuteScalar ( );
}
}
insert into T_user(name,age) OUTPUT inserted.id values ('aaa',100)"语句的作用是插入一条数据,并且返回刚插入数据的id值,
注明,id是T_user表中的一个自增字段。
3、读取数据库返回的结果
using ( SqlConnection conn = new SqlConnection ( "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456" ) )
{
conn.Open ( );
using ( SqlCommand cmd = new SqlCommand() )
{
cmd.CommandText = "select * from T_user";
cmd.Connection = conn;
SqlDataReader reader = cmd.ExecuteReader ( );
while ( reader.Read() )
{
MessageBox.Show (reader.GetInt32(0)+reader.GetString(1)+reader.GetInt32(2));
}
}
}
注意,对于查询语句,我们使用的提交方法是cmd.ExecuteReader ( ),它返回一个SqlDataReader
类的对象,这个对象存储了我们的查询结果。
SqlDataReader reader = cmd.ExecuteReader ( ); 申明一个SqlDataReader 对象来存储结果。
SqlDataReader 类有一个Read()方法,用来依次读取当前数据的一行,如果有数据,返回true,如果没有数据了,返回false。所以我们可以用这个来作为循环条件来依次访问每行数据。
SqlDataReader 类 的方法GetInt32()和GetString()方法用来读取当前行的某一列的数据,参数为他们的列号,列号从0开始。
SqlDataReader 类的 GetOrdinal()方法时根据列名来获取列号的,参数为列名。
Windows Phone 7手机开发、 .Net培训、期待与您交流!