在没有明确打开连接的情况下连接到数据库

问题描述:

我正在帮助一位正在上大学的朋友做她的业务作业。该课程教授VB.NET和ADO.NET(当然非常糟糕)。我只通过我在工作中支持的遗留应用程序对ADO.NET有简短的经验。在没有明确打开连接的情况下连接到数据库

她试图实现的页面非常简单:一个输入为usernamepasswordsubmit按钮的窗体。有一些功能问题,但在查看代码时,我注意到一些奇怪的东西。这是她用在页面的顶部设置连接

Public Shared Con As New SqlConnection("Data Source = asdfa; Initial Catalog= asdf; Persist Security Info = True; User ID= dfasdf; Password = asdf") 
Public Shared strSQLStatement As String 
Public Shared strSQLStatementCmd As String 
Public Shared daActivity As New SqlDataAdapter(strSQLStatement, Con) 
Public Shared dsActivity As New DataSet 

我没有看到任何东西的con.open()的声音,因为我预料的代码。据我所知,ADO.NET需要这样一个命令来初步建立连接。我向她询问这件事,她提到她从未使用open()命令在她的任何其他家庭作业中建立连接,她完全信任她。这段代码中是否有自动为我打开连接的东西?

也许我对ADO.NET的理解是可以理解的。请纠正我,如果我错了,但语言纯粹是用来连接到数据库,并以这种方式

Set up connection string 
Open connection 
Create sql strings, such as command = "select * from table1" 
Tell the open connection to run that sql 
Close Connection 

确实似乎有关的权利如此做?帮助我帮助她。

感谢

+0

您发布的内容中没有任何内容需要打开连接。哪里是使用它的代码。例如dsActivity.Fill? –

SqlDataAdapter将自动打开和关闭你的连接。

Fill方法使用由相关联的SelectCommand属性中指定的SELECT语句 数据源中检索行。与SELECT语句关联的连接对象 必须有效, 但它不需要打开。如果连接在 之前关闭,则会调用填充以检索数据,然后关闭。如果在调用Fill之前 连接已打开,它将保持打开状态。

http://msdn.microsoft.com/en-us/library/905keexk.aspx

+0

感谢您的快速响应。我正在阅读SqlDataAdapter的文档。当该命令运行时,查询实际上并未正确执行?我需要使用'fill'。是否可以更改与该对象关联的sql命令字符串?我很抱歉,因为我通常只是自己尝试这种方式,但目前无法获得这种可用的环境。 – Jeff

+0

'Fill'将执行'SelectCommand',您可以根据需要进行修改。 –

昏暗MovingDA作为新OleDbDataAdapter的(sqlbyworknum,MyConnection的) MovingDA.Fill(MovingDT)

只是你用新的declraing DA,并通过SQL和你的连接将运行结束并运行