C# 从Windows DataGridView DataTable C创建Microsoft Access表#
我想知道如何从C#中的Windows DataGridView DataTable创建新的Microsoft Access表C# 从Windows DataGridView DataTable C创建Microsoft Access表#,c#,database,ms-access,datagridview,C#,Database,Ms Access,Datagridview,我想知道如何从C#中的Windows DataGridView DataTable创建新的Microsoft Access表 我已经有了数据库。(如Database.mdb或.accdb) 但我还没有在数据库文件中创建表 我已经有了DataGridView,它在表中显示数据 我想创建一个与DataGridView显示内容完全相同的新表 请帮我解决这个问题。 我试过创建空表。但我的大多数数据库语句都是硬编码的。(例如,我将所有列设置为VARCHAR数据类型。) 我真的很感激 非常感谢。:) 这
- 我已经有了数据库。(如Database.mdb或.accdb)
- 但我还没有在数据库文件中创建表
- 我已经有了DataGridView,它在表中显示数据
- 我想创建一个与DataGridView显示内容完全相同的新表
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;
}
public void CreateDatabaseTable(字符串数据库,字符串dbTableName)
{
OLEDB连接con;
OleDbCommand cmd;
字符串queryStr=“”;
尝试
{
con=new-OleDbConnection(“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+数据库”);
con.Open();
queryStr=getDataGridViewHeaders().ToString();
cmd=new-OleDbCommand(“创建表”+dbTableName+
([keyID]自动递增主键不为空,“+queryStr+”),con);
cmd.ExecuteNonQuery();
con.Close();
}
捕获(例外情况除外)
{
Show(例如ToString());
}
}
公共字符串getDataGridViewHeaders()
{
int colCount=dataGridView.Columns.Count;
字符串headerCols=“”;
如果(colCount>0)
{
headerCols=“[”+dataGridView.Columns[0]。HeaderText+“]”“+“VARCHAR”;
}
for(int col=1;col
专门显示代码
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
你能举例说明哪些数据库语句是硬编码的吗?