2012-02-28 94 views
2

我想知道如何從C#中的Windows DataGridView DataTable創建新的Microsoft Access表。從Windows DataGridView DataTable創建Microsoft Access表C#

  • 我已經擁有數據庫。 (例如Database.mdb或.accdb)
  • 但我沒有在我的數據庫文件中創建表。
  • 我已經有DataGridView顯示錶中的數據。
  • 我想創建一個與DataGridView顯示內容完全相同的新表。

請幫我解決這個問題。 我試過創建空表。但是我的大部分數據庫語句都是硬編碼的。 (例如,我創建了所有的VARCHAR數據類型的列。) 我非常感謝。

非常感謝。 :)

這些是我的代碼。

public void CreateDatabaseTable(string database, string dbTableName) 
    { 
     OleDbConnection con; 
     OleDbCommand cmd; 
     string queryStr = ""; 

     try 
     { 
      con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + database); 

      con.Open(); 

      queryStr = getDataGridViewHeaders().ToString(); 

      cmd = new OleDbCommand("CREATE TABLE " + dbTableName + 
       "([keyID] AUTOINCREMENT PRIMARY KEY NOT NULL," + queryStr + ")", con); 

      cmd.ExecuteNonQuery(); 

      con.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
    } 

public string getDataGridViewHeaders() 
    { 
     int colCount = dataGridView.Columns.Count; 
     string headerCols = ""; 

     if (colCount > 0) 
     { 
      headerCols = "[" + dataGridView.Columns[0].HeaderText + "]" + " VARCHAR"; 
     } 

     for (int col = 1; col < colCount; col++) 
     { 
      headerCols = headerCols + " , " + "[" + dataGridView.Columns[col].HeaderText + "]" + "VARCHAR"; 
     } 

     Console.WriteLine(headerCols); 
     return headerCols; 
    } 
+0

你可以給被硬編碼什麼數據庫語句的例子嗎? – 2012-02-28 01:44:50

回答

0

This post顯示VB代碼專門

摘錄樣本:

' Part 2: Create one Table using OLEDB Provider 
    Dim con As New OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source =" & databaseName) 
    con.Open() 
    'Get database schema 
    Dim dbSchema As DataTable = con.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, tableName, "TABLE"}) 
    con.Close() 

    ' If the table exists, the count = 1 
    If dbSchema.Rows.Count > 0 Then 
     ' do whatever you want to do if the table exists 
    Else 
     'do whatever you want to do if the table does not exist 
     ' e.g. create a table 
     Dim cmd As New OleDb.OleDbCommand("CREATE TABLE [" + tableName + "] ([Field1] TEXT(10), [Field2] TEXT(10))", con) 
     con.Open() 
     cmd.ExecuteNonQuery() 
     MessageBox.Show("Table Created Successfully") 
     con.Close() 
    End If