我可以从c#将数据插入mdb文件中未知列的表中吗?
我想我有一个奇怪的疑问 我在mdb文件中使用C#[使用非编程工具]创建了一个表,然后我将值插入到该表中,问题是我不知道该表中有多少列可用,但我想插入datagridview中的值 Spire.DataExport.Access.AccessExport AccessExport=新Spire.DataExport.Access.AccessExport()我可以从c#将数据插入mdb文件中未知列的表中吗?,c#,ms-access,datagridview,windows-applications,C#,Ms Access,Datagridview,Windows Applications,我想我有一个奇怪的疑问 我在mdb文件中使用C#[使用非编程工具]创建了一个表,然后我将值插入到该表中,问题是我不知道该表中有多少列可用,但我想插入datagridview中的值 Spire.DataExport.Access.AccessExport AccessExport=新Spire.DataExport.Access.AccessExport() accessExport.DataSource=Spire.DataExport.Common.ExportSource.DataTable
accessExport.DataSource=Spire.DataExport.Common.ExportSource.DataTable;
accessExport.DataTable=this.dataGridView2.DataSource as System.Data.DataTable;
accessExport.DatabaseName=saveFileDialog1.FileName;
accessExport.TableName=“ExtractedTable”;
accessExport.SaveToFile();
//OleDbCommand cmdt=新的OleDbCommand(“创建表”+profiletablegrid.”,con);
字符串strDirectory=saveFileDialog1.FileName;
OleDbConnection conn=新的OleDbConnection(“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+strDirectory”);
conn.Open();
对于(int i=41;i
因为我知道列,所以我插入了4个值,但是如果我不知道有多少列,那么我如何插入值。。。
我可以计算datagridview的总列数,但我如何才能根据这一点进行插入?而不知道
表的列名
或列数
。根据我的经验,插入数据
是不可能的。你如何利用这项工作来获得列名
特定的表格
,然后将数据
插入那些列
。
您要做的第一件事是确保没有返回任何数据:
SELECT TOP 0 your_table.* FROM your_table WHERE 1 = 2;
现在假设您知道如何设置DataReader
,您将执行以下操作:
using(var reader = command.ExecuteReader())
{
// This will return false - we don't care, we just want to make sure the schema table is there.
reader.Read();
var table = reader.GetSchemaTable();
foreach (DataColumn column in table.Columns)
{
Console.WriteLine(column.ColumnName);
}
}
现在您有了列名,所以构建insert语句
<>请考虑你有<代码> N<代码>代码> >代码> >代码>你的<代码>代码<代码>将是这样。
List<string> colArr=new List<string>();
foreach (DataColumn column in table.Columns)
{
colArr.Add(column.ColumnName);
}
List colArr=new List();
foreach(table.Columns中的DataColumn列)
{
colArr.Add(column.ColumnName);
}
现在以这种方式构建sql
string colNames="";
string val="";
for (int i = 0; i < colArr.Count; i++)
{
if(i!=colArr.Count-1)
{
colNames+=col+",";
val+="Some Value,";
}
else
{
colNames+=col;
val+="Some Value";
}
}
string sqlQuery="Insert Into your_Table "+colNames+" ("+val+")";
string colNames=”“;
字符串val=”“;
for(int i=0;i
假设您使用的是OleDbConnection
您可以调用
DataTable schema = connection.GetSchema("Columns");
要获取数据库的模式数据…在该表中,您将在数据库中找到每个表的每一列
使用它在运行时生成SQL语句这将对一个用户有所帮助…实际上,我正在开发一个产品,很多人都会使用,我不知道每个产品将有多少列..有些可能有5或6列,在开发一个产品后,我们不能去更改代码,因此作为一个内置的,我需要一个查询来读取列数并插入值根据列数,我不想要列名知道列数就足够了将代码插入值移到4列,但是如果它们有5列或6列,我们如何插入…有没有办法将datagridview直接导出到mdb文件?我搜索了许多站点,它们所做的只是导出到excel,然后是im在MDB中,您可以尝试将返回的列名保存在一个数组中。然后循环遍历此数组并动态地建立SQL插入语句。这样,如果不增加列数,就不必担心列数。k考虑我有6列,而数组的排列方式与A[[ 0 ]=“p”,[1 ]=“p1”,[2 ]=“p2”,[3 ] =。p3“,a[4]=“p4”,a[5]=“p5”。。那么如何对此给出insert语句,将值插入表中(“…”);如何将所有值传递到一行??
DataTable schema = connection.GetSchema("Columns");