繁体   English   中英

VB.NET未在SQL Server 2008 Express中创建数据库

[英]VB.NET not creating database in sql server 2008 express

我正在开发一个vb.net winform项目,以将访客的详细信息纳入企业。 我正在使用SQL Server 2008 Express数据库存储详细信息。 当应用程序启动时,它将检查数据库,如果存在,它将继续运行,但如果不是,它将在sql server 2008 Express中创建数据库。 附加的代码应该创建数据库(如果不存在的话)(反正应该如此)。 该程序将遍历应该创建数据库的代码,但是会在sqlCon.Open的窗体加载中引发错误,错误是:'无法打开登录请求的数据库“ Visitors”。 登录失败。 如果有人能告诉我我要去哪里错了,将不胜感激。

Private Sub allVisitors_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Me.Text = "All Visitors"

    If Not checkDatabaseExists() Then

        Dim Result1 = MessageBox.Show("Database does not exist, press OK to continue and create database. Press Cancel to close.", "Create database", MessageBoxButtons.OKCancel)
        If Result1 = Windows.Forms.DialogResult.OK Then
            createVisitorsDatabase() 'Calls sub to create database
            createTablesForVisitors() 'Calls sub to create tables in database
        ElseIf Result1 = Windows.Forms.DialogResult.Cancel Then
            Me.Close()
            Exit Sub
        End If

        MessageBox.Show("Database has been created. Press OK to continue.", "Database created", MessageBoxButtons.OK)
    Else

        Dim Result2 = MessageBox.Show("Datebase exists, press OK to continue. Press Cancel to close.", "Dateabase exists", MessageBoxButtons.OKCancel)
        If Result2 = Windows.Forms.DialogResult.OK Then

        ElseIf Result2 = Windows.Forms.DialogResult.Cancel Then
            Me.Close()
            Exit Sub
        End If

    End If

    connectionString = "Data Source=.\SQLExpress;Initial Catalog=Visitors;Integrated Security=True;MultipleActiveResultSets=True"

    sql = "SELECT idNumber, firstName, lastName, company FROM visitorDetails"

    sqlCon = New SqlConnection(connectionString)

    sqlCon.Open() 'Error thrown here.
    'Error is : Cannot open database "Visitors" requested by the login. The login failed.

    sqlCmd = New SqlCommand(sql, sqlCon)

    da = New SqlDataAdapter(sql, sqlCon)

    dt = loadDtVisitorDetails()
    fillDgvVisitorDetails(dt)

    sqlCmd.Dispose()
    sqlCon.Close()

End Sub

Public Sub createVisitorsDatabase()

    connectionString = "Data Source=.\SQLExpress;Integrated Security=True;MultipleActiveResultSets=True"

    sql = "CREATE DATABASE Visitors"

    sqlCon = New SqlConnection(connectionString)

    sqlCon.Open()
    sqlCmd = New SqlCommand(sql, sqlCon)

    da = New SqlDataAdapter(sql, sqlCon)

    sqlCmd.Dispose()
    sqlCon.Close()

End Sub

Public Sub createTablesForVisitors()

    connectionString = "Data Source=.\SQLExpress;Integrated Security=True;MultipleActiveResultSets=True"

    sql = " USE Visitors " & _
   "CREATE TABLE visitorDetails " & _
   "(idNumber int NOT NULL, firstName varchar(25) NOT NULL, lastName varchar(40) NOT NULL, company varchar(150) NOT NULL, " & _
   "contactNumber varchar(50) NOT NULL, countryCode varchar(1000) NOT NULL, photoId varchar(1000) NULL, email varchar(150) NULL, PRIMARY KEY (idNumber)) " & _
   "CREATE TABLE reasonForVisit " & _
   "(idNumber int, dateOnSite varchar(20), reasonForVisit varchar(150))"

    sqlCon.Open()
    sqlCmd = New SqlCommand(sql, sqlCon)

    da = New SqlDataAdapter(sql, sqlCon)

    sqlCmd.Dispose()
    sqlCon.Close()
End Sub

更换线

da = New SqlDataAdapter(sql, sqlCon)

sqlCmd.ExecuteNonQuery()

执行您的CREATE DATABASE。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM