2014-09-13 2 views
2

VB.NET에서 Access 테이블을 만드는 데 문제가 있습니다. "나는 그것이 작동 ID를 제외한 모든를 꺼내 후 내가 다시 멈출하여 그들을에 추가하는 경우VB.NET을 사용하여 Access에서 테이블 만들기

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Try 
     'connection string 
     Dim dbpath As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase) 
     dbpath = New Uri(dbpath).LocalPath 
     Dim my_connection As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\GhostDrive\Desktop\database.mdb" 
     Dim userTables As DataTable = Nothing 
     Dim connection As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection() 
     Dim source As String 

     'query string 
     Dim my_query As String = "CREATE TABLE " & TextBox2.Text & " (" & _ 
      "ID Counter, " & _ 
      "Year datetime," & _ 
      "Title varchar(40)," & _ 
      "image1 Long," & _ 
      "Image2 Long," & _ 
      "Image3 Long," & _ 
      "Image4 Long," & _ 
      "Serial varchar(20)," & _ 
      "Purchaseprice Currency," & _ 
      "Evalprice Currency, " & _ 
      "Datepurchase DateTime, " & _ 
      "Dateeval DateTime, " & _ 
      "Sign varchar(40), " & _ 
      "Grading varchar(20)," & _ 
      "Eval YesNo, " & _ 
      "Star YesNo, " & _ 
      "Folder YesNo, " & _ 
      "Forsale YesNo, " & _ 
      "Error YesNo, " & _ 
      "Barcode(varchar(20)," & _ 
      "Comm YesNo)" 

     'create a connection 
     Dim my_dbConnection As New OleDbConnection(my_connection) 

     'create a command 
     Dim my_Command As New OleDbCommand(my_query, my_dbConnection) 

     'connection open 
     my_dbConnection.Open() 

     'command execute 
     my_Command.ExecuteNonQuery() 

     'close connection 
     my_dbConnection.Close() 
     ListBox1.Items.Clear() 
     source = TextBox1.Text 
     connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + source 
     Dim restrictions() As String = New String(3) {} 
     restrictions(3) = "Table" 
     connection.Open() 
     ' Get list of user tables 
     userTables = connection.GetSchema("Tables", restrictions) 
     connection.Close() 
     ' Add list of table names to listBox 
     Dim i As Integer 
     For i = 0 To userTables.Rows.Count - 1 Step i + 1 
      ListBox1.Items.Add(userTables.Rows(i)(2).ToString()) 
     Next 

    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 


End Sub 
+0

오류 메시지가 있습니까? – lxg

+0

오타가 발생하여 죄송합니다. 코드가 실행되고 시간이 끝나기 시작합니다. – user3408291

+1

'Title varchar (40)'&''Title varchar (40), '&'로 변경 한 후에 쉼표가 누락되었습니다. 작업. – jpw

답변

5

:

내가 가지고 올 한 코드 그러나 나는 점점 오류를 유지 년 날짜, "& _는

YEAR 액세스 SQL에서 reserved word입니다. 내가 ...

Dim connectionString As String = _ 
     "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
     "Data Source=C:\Users\Public\mdbTest.mdb;" 
Using con As New OleDbConnection(connectionString) 
    con.Open() 
    Using cmd As New OleDbCommand() 
     cmd.Connection = con 
     cmd.CommandText = "CREATE TABLE zzzTest (ID COUNTER, Year INTEGER)" 
     Try 
      cmd.ExecuteNonQuery() 
      Console.WriteLine("Table created.") 
     Catch ex As Exception 
      Console.WriteLine(ex.Message) 
     End Try 
    End Using 
    con.Close() 
End Using 

를 다음 코드를 실행하려고하면 내가 대괄호로 필드 이름을 묶으면 ... 나는 ..., 그러나

Syntax error in field definition. 

을 얻을

 cmd.CommandText = "CREATE TABLE zzzTest (ID COUNTER, [Year] INTEGER)" 

... then get

Table created. 
+1

참조 : 필드 이름으로'Error'와'Eval'을 신경 써라 참고 : [Allen Browne의 Access에서 문제 이름과 예약어] (http://allenbrowne.com/AppIssueBadWord.html#E) – HansUp

관련 문제