-3

このクエリを実行しようとすると、構文エラーが発生します。

USE MainDB1
IF EXISTS (SELECT * FROM sysobjects WHERE Name = 'logging' AND TYPE = 'u')
BEGIN
DROP TABLE MainDB1.dbo.logging
END
Create Table logging (TIME NVarChar(20) NOT NULL,1-Bit_Boolean NVarChar(20) NOT NULL,1-Bit_Boolean NVarChar(20) NOT NULL,1-Bit_Boolean NVarChar(20) NOT NULL,1-Bit_Boolean NVarChar(20) NOT NULL,64-Bit_IEEE_floating_point NVarChar(20) NOT NULL,64-Bit_IEEE_floating_point NVarChar(20) NOT NULL,64-Bit_IEEE_floating_point NVarChar(20) NOT NULL,64-Bit_IEEE_floating_point NVarChar(20) NOT NULL,64-Bit_IEEE_floating_point_array NVarChar(20) NOT NULL,32-Bit_unsigned_integer NVarChar(20) NOT NULL,32-Bit_unsigned_integer NVarChar(20) NOT NULL,32-Bit_unsigned_integer NVarChar(20) NOT NULL,32-Bit_unsigned_integer NVarChar(20) NOT NULL,32-Bit_unsigned_integer_array NVarChar(20) NOT NULL,32-Bit_IEEE_floating_point NVarChar(20) NOT NULL,32-Bit_IEEE_floating_point NVarChar(20) NOT NULL,32-Bit_IEEE_floating_point NVarChar(20) NOT NULL,32-Bit_IEEE_floating_point NVarChar(20) NOT NULL,32-Bit_IEEE_floating_point_array NVarChar(20) NOT NULL,32-Bit_signed_integer NVarChar(20) NOT NULL,32-Bit_signed_integer NVarChar(20) NOT NULL,32-Bit_signed_integer NVarChar(20) NOT NULL,32-Bit_signed_integer NVarChar(20) NOT NULL,32-Bit_signed_integer_array NVarChar(20) NOT NULL,16-Bit_signed_integer NVarChar(20) NOT NULL,16-Bit_signed_integer NVarChar(20) NOT NULL,16-Bit_signed_integer NVarChar(20) NOT NULL,16-Bit_signed_integer NVarChar(20) NOT NULL,16-Bit_signed_integer_array NVarChar(20) NOT NULL,16-Bit_unsigned_integer NVarChar(20) NOT NULL,16-Bit_unsigned_integer NVarChar(20) NOT NULL,16-Bit_unsigned_integer NVarChar(20) NOT NULL,16-Bit_unsigned_integer NVarChar(20) NOT NULL,16-Bit_unsigned_integer_array NVarChar(20) NOT NULL)

構文エラーは、6 行目の最初の 1-Bit_Boolean で発生します。クエリは文字列に保存され、後で実行されます。

VB.NET コード:

    Dim sqlcreatetable As String = _
    "USE MainDB1" & vbCrLf & _
    "IF EXISTS (SELECT * FROM sysobjects WHERE Name = 'logging' AND TYPE = 'u')" & vbCrLf & _
    "BEGIN" & vbCrLf & _
    "DROP TABLE MainDB1.dbo.logging" & vbCrLf & _
    "END" & vbCrLf & _
    "Create Table logging (TIME NVarChar(20) NOT NULL,"
    For i As Integer = 1 To aantaltags - 1
        If (i = aantaltags - 1) Then
            sqlcreatetable += csvsql(i) & " NVarChar(20) NOT NULL)"
        Else
            sqlcreatetable += csvsql(i) & " NVarChar(20) NOT NULL,"
        End If
    Next

    Dim dbConnection As New SqlCommand(sqlcreatetable, connection)
    connection.Open()
    dbConnection.ExecuteNonQuery()
    connection.Close()
4

1 に答える 1

1

列名の先頭に数値を使用することはできず、列名のどこにも「-」を使用することはできません。あなたは..のようなクエリを書く必要があります

USE MainDB1 

IF EXISTS (SELECT * FROM sysobjects WHERE Name = 'logging' AND TYPE = 'u') 
BEGIN 
    DROP TABLE MainDB1.dbo.logging 
END 

Create Table logging  
   (TIME NVarChar(20) NOT NULL, Bit_1_Boolean NVarChar(20) NOT NULL)
于 2013-05-15T20:08:09.530 に答える