2017-03-05 51 views
1

我在vb.net中創建數據庫應用程序。我在visual studio中設置了一個標識列(identity = true)。但是,當我運行我的應用程序時,無法識別標識列。我哪裏錯了?數據庫標識列不起作用

我的連接字符串是:

"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Administrator\Desktop\SKEDULERING LOCAL DATABASE\SkeduleringLD1.0\SkeduleringLD1.0\Databasis\Skeddatabasis.mdf;Integrated Security=True" 

我已經將這個活動是app.config文件。然後我打開連接:

Public konneksie As New 
    SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("konneksie").ConnectionString) 

連接確實打開。但身份專欄似乎是一個問題。

+0

你的意思是在數據庫中,還是在AD O.NET Datatable?你使用什麼數據庫引擎?你能發佈你的代碼嗎? – SSS

+0

我編輯了我的問題。我正在使用內置於Visual Studio中的Microsoft SQL Server。 – Gideon

+2

SQL Server沒有內置到Visual Studio中。標識是一種不是名稱或數據類型的列;但是該代碼不會對任何表或列做任何事情。請閱讀[問]並參加[導遊] – Plutonix

回答

1

Identity是一個保留字,因此您需要在查詢中用[Identity]來調用它,或者爲該列使用不同的名稱。

Reserved Keywords List更多

+0

這是id。我已將其更改爲idoesskattings,當我運行我的應用程序時仍然說:'oesskattings'不包含標識列。下面是該表的代碼:[IdOesskattings] INT NOT NULL IDENTITY, [lidno] VARCHAR(50)NULL, [lidnaam] VARCHAR(50)NULL, [plantjaar] INT NULL, [stadium] VARCHAR(50 )NULL, PRIMARY KEY CLUSTERED([IdOesskattings] ASC) ); – Gideon

0

這裏有一個通用的工具方法我用...

假設你有這樣的聲明:

Friend Shared ConnectionString As String = ConfigurationManager.ConnectionStrings("konneksie").ToString 

你可以通過SQL查詢和實例化的DataTable成這個:

Friend Shared Sub LoadData(SQL As String, ByRef TableObject As DataTable, Optional Clear As Boolean = True) 
    If Clear Then TableObject.Clear() 

    Using SqlConnection As New SqlClient.SqlConnection(ConnectionString) 
     With New SqlClient.SqlDataAdapter(SQL, SqlConnection) 
      .SelectCommand.CommandTimeout = 60 
      .MissingSchemaAction = Data.MissingSchemaAction.AddWithKey 
      .FillSchema(TableObject, SchemaType.Source) 
      .Fill(TableObject) 
      .Dispose() 
     End With 
    End Using 

    For Each col As DataColumn In TableObject.PrimaryKey 
     With col 
      If .AutoIncrement Then 
       ' Always set Step BEFORE Seed 
       .AutoIncrementStep = -1 
       .AutoIncrementSeed = -1 
      End If 
     End With 
    Next 
End Sub