首先申明,本人编程菜鸟,本文只是自己的一个总结,各位看客莫笑!
今天闲来无事,写了一段C#.NET 连接 SQLServer 的代码, 写的过程中查找了一些资料,并遇到了一些问题,
闲话少说,先上代码。
1,string strConnection = "Persist Security Info=False;user id=myID;password=myPWD;initial catalog=northwind;Server=mySQLServer;Connect Timeout=30";
这一段应该就是连接DB之前的一些设定了。
包括了用户名,密码,数据库名,服务器地址等等。
如果你的SQL Server设置为Windows登录,那么在这里就不需要使用“user id”和“password”这样的方式来登录,而需要使用“Trusted_Connection=SSPI”来进行登录。
代码如下: string strConnection = "Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer;Connect Timeout=30";
PS:Persist Security Info=False 是什么意思?(具体上google看看)
Persist Security
Info属性的意思是表示是否保存安全信息,其实可以简单的理解为"ADO在数据库连接成功后是否保存密码信息",
True表示保存,False表示不保存。
2,写代码中遇到了2个问题
a问题:
System.InvalidOperationException
是 ServerVersion = 'objConnection.ServerVersion' 的例外。
具体内容是: 操作无效,接续处于关闭状态。
但是这个exception没有被throw出来,等到objConnection.Open() 被执行之后,
ServerVersion 就显示出来了。
仔细想想,这个应该不算exception吧?
因为你都还没有open,人家当然会报 “操作无效,接续处于关闭状态”这个“警告”啦!(猜想,呵呵,不要砸我!)
b问题:
ExecuteReader: Connection 属性没有被初期化
于是加上: objsql.Connection = objConnection
问题得以解决。
仔细想想,不然一个sqlcommand怎么知道我用的是哪个connection,取的是哪个DB啊?!
有时候代码看着挺简单,可是就这么几句代码写起来还碰到好几个问题呢。
只是果然是在于积累啊!
以后就记住了!