如何使用Connection对象链接数据库?html
对于不一样的.NET数据提供者,ADO.NET采用不一样的Connection对象链接数据库。这些Connection对象为咱们屏蔽了具体的实现细节,并提供了一种统一的实现方法。web
Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection。sql
SqlConnection类的对象链接SQL Server数据库;OracleConnection 类的对象链接Oracle数据库;OleDbConnection类的对象链接支持OLE DB的数据库,如Access;而OdbcConnection类的对象链接任何支持ODBC的数据库。与数据库的全部通信最终都是经过Connection对象来完成的。数据库
SqlConnection类安全
Connection 用于与数据库“对话”,并由特定提供程序的类(如 SqlConnection)表示。尽管SqlConnection类是针对Sql Server的,可是这个类的许多属性、方法与事件和OleDbConnection及OdbcConnection等类类似。服务器
注意:使用不一样的Connection对象须要导入不一样的命名空间。OleDbConnection的命名空间为System.Data.OleDb。SqlConnection的命名空间为System.Data.SqlClient。OdbcConnection的命名空间为System.Data.Odbc。OracleConnection的命名空间为System.Data.OracleClinet。网络
咱们就可使用以下两种方式链接数据库,即采用集成的Windows验证和使用Sql Server身份验证进行数据库的登陆。ide
一、集成的Windows身份验证语法范例sqlserver
string constr = "server=.;database=myschool;integrated security=SSPI";post
说明:程序代码中,设置了一个针对Sql Server数据库的链接字符串。其中server表示运行Sql Server的计算机名,因为程序和数据库系统是位于同一台计算机的,因此咱们能够用.(或localhost)取代当前的计算机名。database表示所使用的数据库名(myschool)。因为咱们但愿采用集成的Windows验证方式,因此设置 integrated security为SSPI便可。
二、Sql Server 2005中的Windows身份验证模式以下:
string constr = "server=.;database=myschool;uid=sa;pwd=sa";
说明:程序代码中,采用了使用已知的用户名和密码验证进行数据库的登陆。数据库链接字符串是不区分大小写的。uid为指定的数据库用户名,pwd为指定的用户口令。为了安全起见,通常不要在代码中包括用户名和口令,你能够采用前面的集成的Windows验证方式或者对Web.Config文件中的链接字符串加密的方式提升程序的安全性。
三、Sql Server 2005中的Sql Server身份验证模式以下:
string constr = "data source=.;initial catalog=myschool;user id=sa;pwd=sa";
说明:程序代码中data source 表示运行数据库对应的计算机名,initial catalog表示所使用的数据库名。uid为指定的数据库用户名,pwd为指定的用户口令。
四、Access数据库的链接字符串的形式以下:
string connectionString =@"provider=Microsoft.Jet.OLEDB.4.0;data source=c:\DataSource\myschool.mdb";
说明:程序代码中,经过专门针对Access数据库的OLE DB提供程序,实现数据库的链接。这使用的的OLE DB提供程序为Microsoft.Jet.OLEDB.4.0,而且数据库存放在c:\DataSource目录下,其数据库文件为myschool.mdb。
string constr = "server=.;database=myschool;integrated security=SSPI"; //string constr = "server=.;database=myschool;uid=sa;pwd=sa"; //string constr = "data source=.;initial catalog=myschool;user id=sa;pwd=sa"; SqlConnection con = new SqlConnection(constr); // con.ConnectionString = constr; string sql = "select count(*) from grade"; SqlCommand com = new SqlCommand(sql,con); try { con.Open(); MessageBox.Show("成功链接数据库"); int x = (int)com.ExecuteScalar(); MessageBox.Show(string.Format("成功读取{0},条记录", x)); } catch (Exception) { throw; } finally { con.Close(); MessageBox.Show("成功关闭数据库链接", "提示信息", MessageBoxButtons.YesNoCancel); }
五、Web.config 配置
在ASP.NET 2.0中,使用了一种在运行时解析为链接字符串值的新的声明性表达式语法,按名称引用数据库链接字符串。链接字符串自己存储在 Web.config 文件中的 <connectionStrings>配置节下面,以便易于在单个位置为应用程序中的全部页进行维护。
<?xml version="1.0"?> <configuration> <connectionStrings> <add name="myschool" connectionString="Server=localhost;Integrated Security=True;Database=myschool;Persist Security Info=True" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <pages styleSheetTheme="Default"/> </system.web> </configuration>
咱们也能够用下面的方式从配置文件直接读取数据库链接字符串。首先咱们须要引用using System.Web.Configuration命名空间,该命名空间包含用于设置 ASP.NET 配置的类。string connectionString =ConfigurationManager.ConnectionStrings["myschool"].ConnectionString;
首先你应该区分Windows验证与Sql自身的验证的区别。
Windows验证就是SqlServer服务器使用Windows自带的验证系统,若是你指定SqlServer内Windows的一个组有访问的权限,那么加入此组的Windows用户都有访问数据库的权限。此验证有个缺点,就是若是不是在域模式下,没法加入远程计算机的用户,因此若是使用C/S方式写程序的话,使用Windows验证没法使本地计算机的Windows账户访问远程数据库服务器。
Sql验证就简单多了,就是使用sqlserver的企业管理器中本身定义由Sql控制的用户,指定用户权限等。这个账户信息是由SqlServer本身维护的,因此SqlServer更换计算机后信息不会丢失,不用从新设定。
因此若是你的项目使用在一个比较大的网络中,并且对安全要求比较高,那么应该创建域,使用Windows验证,并且要与系统管理员配合详细设定能够访问SqlServer的Windows账户。若是使用一个小网络,并且此网络仅用来使用项目,对安全没有高要求,那么使用SqlServer验证,并且更新,升级等都方便。
Windows验证与SqlServer验证的数据库联接字符串是不一样的。