【问题标题】:Create SQL Server database and tables from vb.net programmatically without using SQL Server Management Studio in Visual Studio以编程方式从 vb.net 创建 SQL Server 数据库和表,而无需在 Visual Studio 中使用 SQL Server Management Studio
【发布时间】:2018-10-15 08:05:20
【问题描述】:

您能否帮助如何在不打开 Microsoft SQL Server Management Studio 的情况下以编程方式创建 SQL Server 数据库和其中的表?

有一天,我尝试为现有数据库创建一个表并成功创建它,但每次它开始抛出错误时我都会遇到一个问题

此数据库中已有一个名为 ('xxxx') 的对象。

每次我尝试向其中插入数据时都会出现错误,数据已保存,但我想摆脱此错误消息。如何在 Vb 语言代码中使用 try catch 语句来防止这个 SQL Server 错误?

另一个问题,我知道有时 SQL Server 本身会抛出错误;那么如何捕获有时从 SQL Server 本身抛出的错误,并将这些错误捕获并存储到诸如消息框或标签之类的窗口窗体控件之类的东西中,以便用户可以知道这些错误?

希望有人知道,请帮助我在这里学习,感谢您的贡献

我试过的代码:

Private Sub btnsaveextension_Click(sender As System.Object, e As System.EventArgs) Handles btnsaveextension.Click
    Try
        stringQuery=  "if not exists (select * from sysobjects where name='Contract_TimeExtension' and xtype='U') USE MyFirstDB " & _
                      "CREATE TABLE [Contract_TimeExtension] ([Extension No] Integer  NOT NULL,[Extension Approaved Date] Date NOT NULL," & _
                      "[Contractor Received Date] Date NOT NULL,[Extension Notes] Nvarchar(150) NOT NULL,[New Extended Date] Date NOT NULL, " & _
                      "[Contract ID]nvarchar(150) NOT NULL,[Contract Name] nvarchar(max) NOT NULL);")
    Catch ex as Exception
        MsgBox(ex.Message)
    End Try
End Sub

【问题讨论】:

  • 请分享您的代码并获得我们的具体帮助。
  • 我试过的代码如下
  • 代码显示在编辑帖子的末尾。

标签: sql-server vb.net


【解决方案1】:

您查询中的命令顺序错误。

USE MyFirstDBIF EXISTS(...) 部分之后直接调用。
现在如果表已经存在,则只跳过USE MyFirstDB-部分,而不是CREATE TABLE...

您可以将USE MyFirstDB 移至查询的开头或将其完全删除,因为数据库通常已在连接字符串中定义。


要单独捕获SQL exceptions,您可以在Try 块中添加额外的Catch,如下所示:

Try
    ' your code here
Catch ex As System.Data.SqlClient.SqlException
    MsgBox("SqlException thrown: " & ex.Message)
Catch ex As Exception
    MsgBox(ex.Message)
End Try

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2022-01-24
    • 1970-01-01
    • 2015-04-10
    • 2012-12-02
    • 2010-12-12
    • 1970-01-01
    相关资源
    最近更新 更多