黑马程序员_使用ADO.NET

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

从.net 2.0开始,有一种预定义的方式存储链接字符串,甚至是以类型未知的方式来使用数据库连接。例如,可以编写应用程序,然后插入各个数据库提供程序,这些都无需修改猪应用程序。

web应用程序中,在web.config下配置节点信息。WinForm 程序中,在App.config下配置节点信息。

<configuration>

...

<connectionStrings>

 <add name="ConnectionString" connectionString="Data Source=.;Initial Catalog=MyShop;Integrated Security=True"/>

</connectionStrings>

...

</configuration>

在配置文件中定义好数据库连接信息后,就需要在应用程序中利用该信息。

1、获取连接字符串

public static string ConnectionString
        {           
            get 
            {
                string _connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
 
                return _connectionString; 
            }
        }

2、高效的使用连接

主要有两种方式确保数据库连接等类似的“稀缺”资源在使用完后立即释放

第一种方式:try...catch...finally语句块

try

{

conn.Open();//打开数据库连接

}

catch(SqlException ex)

{

//捕捉异常信息,记录

}

finally

{

conn.Close();//关闭数据库连接

}

在finally块中,可以释放已经使用的任何资源。在给定的方法中可能会打开许多资源(如多个数据库连接和一个文件),这种情况下,该try...catch...finally语句块的层次有时不易看懂。另外,finally块中有时忘记写关闭连接命令了。

还有一种方法可以很好的解决这个问题,就是使用using语句块


2、using语句块

 using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(SQLString, connection))
                {
                    try
                    {
                        connection.Open();
                        int rows = cmd.ExecuteNonQuery();//执行命令,返回受影响的记录个数
                        return rows;
                    }
                    catch (System.Data.SqlClient.SqlException e)
                    {
                        connection.Close();
                        throw e;
                    }
                }
            }

3、执行命令

SqlCommand类有以下几种可执行的命令

ExecuteNonQuery();返回受影响的记录个数

ExecuteReader();返回一个类型化的DataReader

ExecuteScalar();返回结果集中第一行第一列的值

ExecuteXmlReader();返回一个XmlReader对象,它可以遍历从数据库中返回的XML片段


DataReader对象允许开发人员获得从Command对象的select语句得到的结果。考虑性能的因素,从DataReader返回的数据都是快速的且只是“向前”的数据流。这意味着开发人员只能按照一定的顺序从数据流中取出数据。这对于速度来说是有好处的,但是如果开发人员需要操作数据,更好的办法是使用DataSet。

DataSet类

DataSet类是数据的脱机容器。它不包含数据库连接的概念,实际上存储在DataSet中的数据不一定来于数据库,它可以是来自CSV文件、XML文件的记录,或是从测量设备中读取的点。

DataSet类由一组数据表组成,每个表独有一组数据列和数据行。在DataSet中还可以定义表之间的链接。DataSet类基本上是内存中的数据库,其中包含了所有表、关系和约束。

用数据适配器来填充DataSet:

string sqlString=“select Name, Password From TUsers”;

SqlConnection conn=new SqlConnection(ConnectionString);

SqlDataAdapter da=new SqlAdaper(sqlString,conn);

DataSet ds=new DataSet();

da.Fill(ds,"TUsers");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值