黑马程序员之ADO.NET基础学习笔记(一)

 

  今天学习了ADO.NET,在学期的过程中发现了一些问题,和大家分享一下。在创建数据库时,有两种方法,一种是把数据库附加到SQL server management里,另一种是直接用VS创建数据库。那两种有什么不同呢?用VS创建的数据库有一个好处,就是如果你要把源代码发给另人看时,人家不用再用SQL server management来附加你的数据库了,而是直接在VS里用双击数据库就能连接了。但是这两种方式在编程时是有分别的,它们用到的数据连接代码不太一样,下面我将详细介绍。

  如果你是用SQL server management附加的数据库,在编程时只要写下下面的代码即可。注意:我这里的Data Source后面是空的,有些同学说用空的不行,到少要一个.或者.\SQLEXPRESS,但是我这里是可以的,不知道是不是因为我装的是完整版的SQL server的关系。还有一个要注意的地方是Initial Catalog只加了一个数据库的名称,而不是它的完整路径,这里是我在附加的时候在附加那个选项里把它改成了文件名,把路径删掉了,这样方便些。

SqlConnection conn = new SqlConnection(@"Data Source=;Initial Catalog=Database1.mdf;Integrated Security=True");

 

  而如果是用Visual Studio创建的数据库,只需要填写下面的代码。这里和上面的有些不同。首先因为VS自带有一个免费的数据库,叫SQL Express,所以它要连接数据库的话,Data Source后面是.\SQLEXPRESS。而且因为VS里用的是它自己的数据库附加,所以用AttachDbFilename后跟完整的数据库完整路径,而不是用上面的Initial Catalog了。最后还多了一条User Instance,这个我试过把它删掉,也能连接到数据库,但我把数据库排除项目后再添加进来,就连接不上了,得加上它才行,所以我建议还是每次都加上它。

SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Documents\Visual Studio 2010\Projects\ADO.NET\ADO.NET\Database1.mdf;Integrated Security=True;User Instance=True");

 

  在这里,可能有同学会问了,这个路径这么长,太麻烦了,有没有简便一点的,答案是有的。

string dataDir = AppDomain.CurrentDomain.BaseDirectory;
if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release\"))
{
dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
}

  你只要在主函数里加上上面这段代码,就可以简化了,简化后的用法如下:

SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True");

  看,是不是代码短了很多?这里就是用一个DataDirectory替换了它的绝对路径,不过到后面了我们会有更简单的方法来实现,这个以后再讲。

  说了这么多,大家对于这几种不同的用法是不是都明白了呢?

 

posted @ 2011-12-03 11:22  caohenghu  阅读(179)  评论(0)    收藏  举报