ADO.NET数据库访问使用范例(一)

示例一、使用数据提供程序的范例

app.config

<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="provider" value="System.Data.SqlClient"/> <add key="cnStr" value="Data Source=(local)/SQL2005;Initial Catalog=AutoLot;Integrated Security=True"/> </appSettings> </configuration>

Program.cs

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data.Common; using System.Data; using System.Configuration; namespace DataProviderFactory { class Program { static void Main(string[] args) { Console.WriteLine("*****使用Provder Factory示例******"); string dp = ConfigurationSettings.AppSettings["provider"]; string cnStr = ConfigurationSettings.AppSettings["cnStr"]; //得到工厂提供程序 DbProviderFactory df = DbProviderFactories.GetFactory(dp); //得到连接对象 DbConnection cn = df.CreateConnection(); Console.WriteLine("连接对象是:{0}", cn.GetType().FullName); cn.ConnectionString = cnStr; cn.Open(); //得到命令对象 DbCommand cmd = df.CreateCommand(); Console.WriteLine("命令对象是:{0}", cmd.GetType().FullName); cmd.Connection = cn; cmd.CommandText = "Select * from Inventory"; //从数据读取器中输出数据 DbDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); Console.WriteLine("数据读取器对象是:{0}", dr.GetType().FullName); while (dr.Read()) { Console.WriteLine("-->Car #{0} is a {1}", dr["CarID"], dr["Make"].ToString().Trim()); } dr.Close(); Console.ReadLine(); } } }

例二、使用ConfigurationManager实现多Provider形式

为了可以让系统提供不同的数据Provider,将App.config配置成connectionString可以获得这样的效果

<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="provider" value="System.Data.SqlClient"/> <!--<add key="cnStr" value="Data Source=(local)/SQL2005;Initial Catalog=AutoLot;Integrated Security=True"/>--> </appSettings> <!--connectionString可以让数据提供程序配置更加灵活--> <connectionStrings> <add name="AutoLotSqlProvider" connectionString="Data Source=(local)/SQL2005;Initial Catalog=AutoLot;Integrated Security=True"/> <add name="AutoLotOleDbProvider" connectionString="Provider=SQLOLEDB;Data Source=(local)/SQLExpress;Integrated Security=SSPI;Initial Catalog=AutoLot"/> </connectionStrings> </configuration>

相应修改源程序为

//注意使用System.Configuration需要手动添加引用System.Configuration.dll using System.Configuration; namespace DataProviderFactory { class Program { static void Main(string[] args) { Console.WriteLine("*****使用Provder Factory示例******"); //string dp = ConfigurationSettings.AppSettings["provider"]; string dp = ConfigurationManager.AppSettings["provider"]; //string cnStr = ConfigurationSettings.AppSettings["cnStr"]; string cnStr = ConfigurationManager.ConnectionStrings["AutoLotSqlProvider"].ConnectionString;//注意索引后还有属性ConnectionString …… } } }

例三、使用编程模式指定连接字符串

你也可以使用编程的方式自定义connectionString,下面演示使用编程模式指定connectionString,利用SqlConnect,SqlCommand,SqlDataReader实现数据的读写

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data.Common; using System.Data; using System.Configuration; namespace DataProviderFactory { class Program01 { static void Main(string[] args) { Console.WriteLine("*****使用Provder Factory示例******"); SqlConnection cn = new SqlConnection(); cn.ConnectionString = @"Data Source=(local)/SQL2005;Initial Catalog=AutoLot;Integrated Security=True"; cn.Open(); string strSql = "Select * from Inventory"; SqlCommand cmd = new SqlCommand(strSql, cn); SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); while (sdr.Read()) { Console.WriteLine("-->Car #{0} is a {1}", sdr["CarID"], sdr["Make"].ToString().Trim()); } sdr.Close(); Console.ReadLine(); } } }

例四、使用ConnectionStringBuilder构建连接字符串

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data.Common; using System.Data; using System.Configuration; namespace DataProviderFactory { class Program01 { static void Main(string[] args) { Console.WriteLine("*****使用Provder Factory示例******"); SqlConnection cn = new SqlConnection(); SqlConnectionStringBuilder conStringBuilder = new SqlConnectionStringBuilder(); conStringBuilder.InitialCatalog = "AutoLot"; conStringBuilder.DataSource = @"(local)/sql2005"; conStringBuilder.IntegratedSecurity = true; conStringBuilder.ConnectTimeout = 30; cn.ConnectionString = conStringBuilder.ConnectionString; cn.Open(); …… } } }


小结:

.Net连接类型需要靠一个符合一定格式的链接字符串进行创建,通常他包含了几对名称/值的信息并且通过分号分隔。这些信息用来确定你想要连接的计算机名、必要地安全配置,机器上数据库的名称和其他一些数据提供程序特有的信息。

  • Initial Category:我们要连接的数据库名称
  • Data Source:我们使用的数据库所在的机器名,其中(local)标记了本地机器(不管这个机器的名字叫什么),而/SQL2005是按照的数据库实例名。
  • Integrated Security=True等价于(SSPI),它使用当前的Windows账户凭据作为用户身份验证。像这样同样的节点可以设置多个冗余值(如SSPI,true和yes,他们的行为对Integrated Security值来说是一样的),此外,你还会发现很多术语(如Initial Catalog 和Database是可以互换的)


你可能感兴趣的:(ADO.NET数据库访问使用范例(一))