您的位置:首页 > 职场人生

黑马程序员--学习笔记之ADO.Net基础知识

2012-06-24 16:00 761 查看
---------------------- Windows Phones 7手机开发.Net培训、期待与您交流! ----------------------

主要是摘自教程的PPT(官方的话才有权威)
ADO.Net中提供了对各种不同数据库的统一操作接口

程序要和数据库交互时,要通过ADO.Net进行操作,使用ADO.Net就能在程序中执行SQL

直接在项目中内嵌mdf文件的方式使用SQLServer数据库(基于服务的数据库),mdf文件随着项目走,使用起来方便多,

和在数据库服务器上创建数据库没什么区别,运行的时候会自动附加

双击mdf文件会在“服务器资源管理器”中打开,管理方式和在Management Studio没有什么本质不同,

另外要注意的是:当你拷贝mdf文件需要关闭所有指向mdf文件的连接
正式生成运行的时候,附加到SQLServer上,修改连接字符串即可,除此之外没有任何的区别,在“数据库”节点上点
右键“附加”;在数据库节点上-->任务-->分离,就可以得到可以拷贝的mdf文件了

杨老师常说的“神奇代码”:

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);
}

这里摘自杨老师的原理分析
原理简单分析:连接字符串中的DataDirectory的值就是通过AppDomain.CurrentDomain.SetData赋值过去的,如果 当前程序的目录以"\bin\Debug\"或者"\bin\Release\"则认为它是运行在VisualStudio环境中,就取项目的目录然后赋 值给DataDirectory这个key。既然是CurrentDomain.SetData,估计对于非默认AppDomain中的数据库连接代码可 能会不起作用(只是猜测,没验证),这就要需要创建子AppDomain的时候再去赋值了。

连接SQLServer

连接字符串:程序通过连接字符串,指定要连哪台服务器上的,哪个实例的哪个数据库,用什么用户名密码等
项目内嵌mdf文件形式的连接字符串“DataSource=.\SQLEXPRESS:AttachDBFilename=|DataDirectory|\Database1.mdf;
Integrated Security=True;User Instance=True”

其中,.\SQLEXPRESS表示“本机上的SQLEXPRESS实例”,如果数据库实例名不是SQLEXPRESS,则需要修改,Database1.mdf
为mdf的文件名

ADO.Net中通过SqlConnection类创建到SQlServer的连接,SqlConnection代表一个数据库连接,ADO.Net中的连接等资源都实现了IDisposableu接口,可以使用using进行资源管理,

常见问题:--(摘自网络)

由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。该连接将关闭。
在使用ASP.NET 2.0 + SQL2005 + aspnetdb(MemberShip等功能)时出现这个问题:“由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。该连接将关闭。”,其英文版本的相同问题的错误信息是:“Failed to generate a user instance of SQL Server due to a failure in starting the
process for the user instance. The connection will be closed.”

解决办法:删除C:\Documents and Settings\[USERNAME]\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS目录即可,[USERNAME]是Windows用户名,比如说Administrator

---------------------- Windows Phones 7手机开发.Net培训、期待与您交流! ----------------------
详细请查看http://net.itheima.com/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: