从 Windows DataGridView DataTable C# 创建 Microsoft Access 表

Posted

技术标签:

【中文标题】从 Windows DataGridView DataTable C# 创建 Microsoft Access 表【英文标题】:Create Microsoft Access Table from Windows DataGridView DataTable C# 【发布时间】:2012-02-28 01:15:14 【问题描述】:

我想知道如何在 C# 中从 Windows DataGridView DataTable 创建新的 Microsoft Access 表。

我已经有了数据库。 (例如 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;
    

【问题讨论】:

你能举一些数据库语句是硬编码的例子吗? 【参考方案1】:

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

【讨论】:

以上是关于从 Windows DataGridView DataTable C# 创建 Microsoft Access 表的主要内容,如果未能解决你的问题,请参考以下文章

Windows 窗体:从网站到 dataGridView 的 XML

使用两个 Windows 窗体 DataGridView 控件创建一个主/从窗体

在datagridview中过滤数据时截断日期

Winfrom窗体应用程序___DataGridView

如何从 c# Windows 窗体中文本框的文本内容更新 datagridview 的列

从 Windows DataGridView DataTable C# 创建 Microsoft Access 表