无法使用tableadapters.fill和amp;连接到数据库VB.NET中的sql代码

时间:2011-03-27 21:41:08

标签: sql vb.net sql-server-2008

跑掉我的笔记本电脑:Visual Basic 2010 Express& SQL Server 2008

我已经成功地使用连接向导连接到vb.net中的数据库,并使用datasets / tableadapters / binding_source等读取/写入数据。

现在我尝试通过代码创建SQL连接以连接到我的数据库以执行更复杂的查询。 我成功地能够使用SQL连接到我的数据库,但是当它尝试从下面的TableAdapters运行任何.Fill()方法时会产生错误。

产生的错误如下:“SqlException未处理。无法打开用户默认数据库。登录失败。用户'Chris-PC \ Chris'登录失败。”

如果我删除了我的SQL连接代码,TableAdapter.Fill()方法将正常工作。

如何让两者同时访问数据库?有什么建议?

这是代码:`

  Dim connetionString As String
    Dim cnn As SqlConnection
    connetionString = "Data Source=CHRIS-PC\SQLEXPRESS;Initial Catalog=database_db;Integrated Security=SSPI;Trusted_Connection=True;"
    cnn = New SqlConnection(connetionString)
    Try
        cnn.Open()
        MsgBox("Connection Open ! ")
        cnn.Close()
    Catch ex As Exception
        MsgBox("Can not open connection ! ")
    End Try


    Me.JobsTableAdapter.Fill(Me.database_dbDataSet.jobs)
    Me.ApplicationsTableAdapter.Fill(Me.database_dbDataSet.applications)
    Me.ApplicantsTableAdapter.Fill(Me.database_dbDataSet.applicants)

`

2 个答案:

答案 0 :(得分:2)

经过几个小时的搜索和测试,我终于能够解决我的问题了。

问题在于使用我的DataSet的配置向导创建的连接字符串。关键问题是它有“User Instance = True”

当“User Instance = True”时,您将删除任何其他连接能够连接到服务器的功能。因此,我打开了app.config并将连接字符串更改为我在代码中用于SQL连接的连接字符串。之后,一切正常。

答案 1 :(得分:0)

通常当我看到错误Cannot open user default database时,因为未授予用户访问默认数据库的权限。快速解决方法是将默认设置为您确定用户可以访问的内容。此question的答案向您展示如何使用TSQL设置默认数据库。

Stephen Wrighton接受的answer有此代码。

sp_defaultdb [@loginame =] 'login' , [@defdb =] 'database'

那说我不知道​​为什么打开一个连接会在后续的Fill中导致这个错误。