日期:2014-05-18  浏览次数:21297 次

C# DataGridView 存入 Access数据库问题
请问如何将DataGridview里的数据存入一个新的Access文件?
我的做法是:先用ADOX创建了一个新的数据库文件,然后将DataGridview的数据放入DataTable,再insert到刚建的mdb文件,但是在往里面创建表是老出错,为什么?我的代码如下:
[code=C#][/code]
DataTable dt = new DataTable();
for (int i = 0; i < displayDataGridView.Columns.Count; i++)  
{
  DataColumn dc = new DataColumn();
  dc.ColumnName = displayDataGridView.Columns[i].HeaderText;
  dt.Columns.Add(dc);
}
for (int i = 0; i < displayDataGridView.Rows.Count - 1; i++)
{
  DataRow dr = dt.NewRow();
  for (int j = 0; j < displayDataGridView.Columns.Count; j++)
  {
  dr[j] = displayDataGridView.Rows[i].Cells[j].Value;
  }
  dt.Rows.Add(dr);
}
string tablename="数据";
ADOX.CatalogClass cat = new CatalogClass();
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";");  
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+fileName);
con.Open(); 

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = "CREATE TABLE " + tablename + " (";
for (int i = 0; i < dt.Columns.Count; i++)
{
  cmd.CommandText += dt.Columns[i].ColumnName + " ";
  cmd.CommandText += "text";
  if (i < dt.Columns.Count - 1)
  cmd.CommandText += ",";
  else
  cmd.CommandText += ")";
}
cmd.ExecuteNonQuery();
最后一句老提示“字段定义语法错误”,请高手指点,谢谢!

------解决方案--------------------
遍历datagridview获取数据,添加到datatable 
通过OleDbDataAdapter 更新数据库
------解决方案--------------------
你的SQL字符串有错呢
------解决方案--------------------
楼主的思路正确。检查下SQL语句
------解决方案--------------------
字段名先直接用常量试试,再调试对比着看看。
------解决方案--------------------
cmd.CommandText = "CREATE TABLE " + tablename + " (";
for (int i = 0; i < dt.Columns.Count; i++)
{
cmd.CommandText += dt.Columns[i].ColumnName + " ";
cmd.CommandText += "text";
if (i < dt.Columns.Count - 1)
cmd.CommandText += ",";
else
cmd.CommandText += ")";

测试下这个字符串,调式的时候把生成的字符串拷贝出来,直接在Access中执行下,看看有没有错误
------解决方案--------------------
CREATE TABLE 数据 (类型 text,编号 text,日期 text,时间 text,[浓度(%)] text,[温度(℃)] text)