C# 如何将GridView导出到C中的MS Access#
我想用C语言将网格导出到MS Access# 以下是我尝试过的代码:C# 如何将GridView导出到C中的MS Access#,c#,asp.net,C#,Asp.net,我想用C语言将网格导出到MS Access# 以下是我尝试过的代码: String accessConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\\...\\test.accdb;"; String sqlConnectionString = ConfigurationManager.ConnectionStrings["College"].ConnectionString; SqlDataAdapte
String accessConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\\...\\test.accdb;";
String sqlConnectionString = ConfigurationManager.ConnectionStrings["College"].ConnectionString;
SqlDataAdapter adapter1 = new SqlDataAdapter();
adapter1.Fill(dtFillGrid);
ADOX.Catalog catalog = new ADOX.Catalog();
catalog.Create(accessConnectionString);
OleDbConnection accessConnection = new OleDbConnection(accessConnectionString);
OleDbCommand command = new OleDbCommand();
command.Connection = accessConnection;
command.CommandType = CommandType.Text;
accessConnection.Open();
foreach (DataTable table in dtFillGrid.Rows) {
String columnsCommandText = "(";
foreach (DataColumn column in table.Columns) {
String columnName = column.ColumnName;
String dataTypeName = column.DataType.Name;
String sqlDataTypeName = getSqlDataTypeName(dataTypeName);
columnsCommandText += "[" + columnName + "] " + sqlDataTypeName + ",";
}
columnsCommandText = columnsCommandText.Remove(columnsCommandText.Length - 1);
columnsCommandText += ")";
command.CommandText = "CREATE TABLE " + table.TableName + columnsCommandText;
command.ExecuteNonQuery();
}
//This loop fills the database with all information
foreach (DataTable table in dtFillGrid.Rows) {
foreach (DataRow row in table.Rows) {
String commandText = "INSERT INTO " + table.TableName + " VALUES (";
foreach (var item in row.ItemArray) {
commandText += "'" + item.ToString() + "',";
}
commandText = commandText.Remove(commandText.Length - 1);
commandText += ")";
command.CommandText = commandText; command.ExecuteNonQuery();
}
}
accessConnection.Close();
如何执行此操作?我建议您创建MDB数据库,使用sql创建所需的表,然后在运行时绑定gridview,或者循环结果并执行批导入 请看这里:
这里我不是在MS Access中导出gridview,而是在以下代码的帮助下使用C#在MS Access中创建了一个数据库:
ADOX.Catalog cat = new ADOX.Catalog();
ADOX.Table table = new ADOX.Table();
//Create the table and it's fields.
table.Name = "Table1";
table.Columns.Append("PartNumber", ADOX.DataTypeEnum.adVarWChar, 6); // text[6]
table.Columns.Append("AnInteger", ADOX.DataTypeEnum.adInteger, 10); // Integer
try
{
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=d:/m2.accdb;" + "Jet OLEDB:Engine Type=5");
cat.Tables.Append(table);
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;" + "Data Source=d:/m2.accdb");
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO Table1([PartNumber],[AnInteger]) VALUES (@FirstName,@LastName)";
cmd.Parameters.Add("@FirstName", OleDbType.VarChar).Value = "neha";
cmd.Parameters.Add("@LastName", OleDbType.VarChar).Value = 20;
cmd.ExecuteNonQuery();
conn.Close();
}
catch (Exception ex)
{
result = false;
}
cat = null;
是的,我告诉大家,我们不需要通过gridview将数据导出到MS Access,我们可以直接使用C#在MS Access中创建数据库,如果您在付款方面没有问题,您可以使用“Spire doc”将数据网格保存到msAccess中,如下所示:
private void btnExportToAccess_Click(object sender, EventArgs e)
{
Spire.DataExport.Access.AccessExport accessExport = new
Spire.DataExport.Access.AccessExport();
accessExport.DataSource = Spire.DataExport.Common.ExportSource.DataTable;
accessExport.DataTable = this.dataGridView1.DataSource as DataTable;
accessExport.DatabaseName = @"..\..\ToMdb.mdb";
accessExport.TableName = "ExportFromDatatable";
accessExport.SaveToFile();
}
还有一个链接,您可以在其中找到更多说明您尝试过什么吗?web grid或win forms grid?是的,我尝试过以下代码:String accessConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\\…\\test.accdb;”;字符串sqlConnectionString=ConfigurationManager.ConnectionStrings[“College”].ConnectionString;SqlDataAdapter adapter1=新的SqlDataAdapter();适配器1.填充(dtFillGrid);ADOX.Catalog=new ADOX.Catalog();创建(accessConnectionString);OleDbConnection accessConnection=新的OleDbConnection(accessConnectionString);OLEDBCOMAND命令=新的OLEDBCOMAND();command.Connection=accessConnection;command.CommandType=CommandType.Text;accessConnection.Open();foreach(dtFillGrid.Rows中的DataTable表){String columnsCommandText=“(”)使用相关代码编辑您的问题,而不是将其发布在注释中。当我使用ADOX.Catalog cat=new ADOX.Catalog()时,请在此处发布;它显示了一些错误,例如:找不到类型或名称空间ADOX是的,我告诉大家,我们不需要通过gridview将数据导出到MS Access,我们可以使用C在MS Access中直接创建数据库#
private void btnExportToAccess_Click(object sender, EventArgs e)
{
Spire.DataExport.Access.AccessExport accessExport = new
Spire.DataExport.Access.AccessExport();
accessExport.DataSource = Spire.DataExport.Common.ExportSource.DataTable;
accessExport.DataTable = this.dataGridView1.DataSource as DataTable;
accessExport.DatabaseName = @"..\..\ToMdb.mdb";
accessExport.TableName = "ExportFromDatatable";
accessExport.SaveToFile();
}