2016-08-05 90 views
0

我的代码创建一个数据库,然后在数据库中创建表。有时候我运行它的代码时就起作用了。其他时候,数据库是创建的,但是当它试图创建表时会抛出一个异常:用户'登录失败'SQL登录失败,在创建表

奇怪的是,它有时会工作并创建表,然后有时候会抛出这个错误,而无需更改任何代码。

编辑:亦作表创建的代码时,我把它当作是创建数据库后一个单独的按钮,尽管它有,当我把它保存在数据库创建后问题始终有效。

我使用的集成安全性。如果有人可以让我知道为什么会出现这个问题,我该如何解决这个问题,这将是值得赞赏的。

数据库创建代码:

Dim str As String 
    '"Data Source=(Local)\SQLEXPRESS;Initial Catalog=TestDB;Integrated Security=True" 
    Dim myConn As SqlConnection = New SqlConnection("Server=(local)\SQLEXPRESS;Integrated Security=True;database=master") 

    str = "Create Database TestDB" 
    Dim myCommand As SqlCommand = New SqlCommand(str, myConn) 

    Try 
     myConn.Open() 
     myCommand.ExecuteNonQuery() 
     Dim result1 As DialogResult = MessageBox.Show("Database is created successfully", 
        "MyProgram", MessageBoxButtons.OK, 
        MessageBoxIcon.Information) 
     If result1 = DialogResult.OK Then 
     End If 

    Catch ex As Exception 
     MessageBox.Show(ex.ToString()) 
    Finally 
     If (myConn.State = ConnectionState.Open) Then 
      myConn.Close() 
     End If 
     Me.Close() 
    End Try 

表创建代码:

Try 
      Dim con As New SqlConnection 
      Dim cmd As New SqlCommand 
      con.ConnectionString = "Data Source=(Local)\SQLEXPRESS;Initial Catalog=TestDB;Integrated Security=True" 
      con.Open() 
      cmd.Connection = con 
      cmd.CommandText = "CREATE TABLE parts" + "(partID nvarchar(50), description nvarchar(50), color nvarchar(50))" 
      cmd.ExecuteNonQuery() 
      cmd.CommandText = "CREATE TABLE stockNew" + "(stockID1 nvarchar(50), stockID2 nvarchar(50), stockID3 nvarchar(50))" 
      cmd.ExecuteNonQuery() 
      cmd.CommandText = "CREATE TABLE stockUsed" + "(stockID1 nvarchar(50), stockID2 nvarchar(50), stockID3 nvarchar(50))" 
      cmd.ExecuteNonQuery() 
      cmd.CommandText = "CREATE TABLE activationCode" + "(blah nvarchar(50))" 
      cmd.ExecuteNonQuery() 
      MessageBox.Show("Tables have been created successfully", "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information) 
     Catch ex As Exception 
       MessageBox.Show(ex.ToString()) 
     End Try 
+0

我增加了另一个奇怪的发生: 表创建代码总是工作,当我把它作为一个单独的按钮后,数据库创建,即使它当我在数据库创建后立即放置它时会出现问题。 –

回答

0

这可能是一个汇集问题。您的初始目录可能未设置,因此您可能会尝试在Master中创建这些表格。尝试完全限定的表名并查看它可以解决问题。 CREATE TABLE TestDB.dbo.stockUsed ... etc.等

+0

它没有工作,我仍然有例外,无法打开数据库,用户登录失败 –