0

您好我正在尝试建立与数据源的连接并提取信息并将其显示在网格视图中。问题是我总是得到 ada 的空值。是否可能输入错误的查询或适配器有问题?

此外,我使用 myInt 变量插入不同的数据源,因为我必须处理多个文件,也许这也可能有问题。

try
            {
                //establish connectioin
                OleDbConnection conn = new OleDbConnection(("provider=Microsoft.Jet.OLEDB.4.0; " + ("data source=" + myInt + ";" + "Extended Properties=Excel 8.0;")));

               OleDbDataAdapter ada = new OleDbDataAdapter("SELECT * FROM MarkingSheet$]", conn);

                DataSet ds = new DataSet();

               ada.Fill(ds);
               dataGridView1.DataSource = ds.Tables[0].DefaultView;

               conn.Close();
            }

回答这对我有用

OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + myPath + ";Excel 12.0;HDR=YES;"); ;
              conn.Open();
              OleDbDataAdapter ada = new OleDbDataAdapter("select * from [Marking Sheet$]", conn); ;
               DataSet ds = new DataSet();
               ada.Fill(ds);
4

2 回答 2

0

您的代码中的错误是您尝试填充适配器时没有打开连接。你的 SQL 语句也是错误的。您可能还希望像这样将 DataTable 绑定到 DataGridView:-

 try
     {

         OleDbConnection conn = new OleDbConnection(("provider=Microsoft.Jet.OLEDB.4.0; " + ("data source=" + myInt + ";" + "Extended Properties=Excel 8.0;")));

         OleDbDataAdapter ada = new OleDbDataAdapter("SELECT * FROM [MarkingSheet$]", conn);

         DataSet ds = new DataSet();

         conn.Open();             

         ada.Fill(ds.Tables[0]);

         conn.Close();

         BindingSource bs = new BindingSource();
         bs.Datasource = ds.Tables[0];

         dataGridView1.DataSource = bs;

      }
  catch(OledbException x)
      {
        // Handle Exception
      }

编辑* *

尝试将连接字符串更改为:-

string connString = "provider=Microsoft.Jet.OLEDB.4.0;Data source=" + myInt + ";Extended Properties=Excel 8.0;HDR=Yes;IMEX=1\";";
于 2012-12-12T18:45:09.323 回答
0

将sql更改为

"SELECT * FROM [MarkingSheet$]"

因为缺少左括号。

于 2012-12-12T18:36:08.063 回答