OleDbConnection odconn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\BF\BugTypes.mdb");
            odconn.Open();            OleDbCommand odcomm = new OleDbCommand();            odcomm.CommandText = "select * from *";            odcomm.Connection = odconn;            DataSet ds = new DataSet();
          
            OleDbDataAdapter odda = new OleDbDataAdapter(odcomm);            odda.Fill(ds);
            //odda.Fill(ds, "Categories");            Console.WriteLine("Table count: {0}", ds.Tables.Count);
            foreach (DataTable item in ds.Tables)
            {
                Console.WriteLine("   Table :{0}", item.TableName);
   
            }
问题是:我想对数据库中所有的表进行访问,那我该如何 修改 下面的这行语句。
odcomm.CommandText = "select * from *";

解决方案 »

  1.   

    加join 之类的连接应该可以吧.
      

  2.   

    Select * from * !!!!!这都行!你先获取到所有表名... 然后获取表的数据到可以..
      

  3.   

    odcomm.CommandText = "select * from *";就是这句我不会写啊!如何选择所有的表?
      

  4.   

    select * from sysobjects where type='u' and name!='dtproperties'
      

  5.   


    嗯,谢谢,我能看懂这句代码,不过若你能把这句代码的实例从IDE中直接COPY 过来,我也算学习了。最者,我是不知如何写这句:odcomm.CommandText = 。。
    我是想这样在后面的操作中访问数据库中所有的表
      

  6.   

    Access中好像没有sysobjects,如果你想查找所有的表,好像你需要知道你的Access中的所有表名,然后遍历就好了。希望对你有帮助。
      

  7.   

    难道连接所有的表必须写出所有的表名在odcomm.CommandText 语句中 ?
      

  8.   

    我的意思是说,我假若不知道在数据库中不知道有多少个表和表的名称,而我又想访问所有的表,我该怎样写查询语句在odcomm.CommandText 中?
      

  9.   

    你可 以这样:            OleDbConnection odconn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\BF\northwind.mdb");
                odconn.Open();            DataTable  dtc = odconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });            Console.WriteLine("dtc.Rows.Count = {0} ",dtc.Rows.Count);
                Console.WriteLine("dtc.Cols.Count = {0} ", dtc.Columns.Count);            foreach (DataRow  item in dtc.Rows )
                {
                    Console.WriteLine("0:" + item[0] + "   1:" + item[1] + "   2:" + item[2] + "   3:" + item[3]);
                }
    使用 .GetOleDbSchemaTable() 方法返回表,不过很怪的是是,它总是在第三列中显示出结果,就是不知道如何正确的返回?
    dtc.Rows.Count = 9 
    dtc.Cols.Count = 9 
    0:   1:   2:Categories   3:TABLE
    0:   1:   2:Customers   3:TABLE
    0:   1:   2:Employees   3:TABLE
    0:   1:   2:Order Details   3:TABLE
    0:   1:   2:Orders   3:TABLE
    0:   1:   2:Products   3:TABLE
    0:   1:   2:Shippers   3:TABLE
    0:   1:   2:Suppliers   3:TABLE
    0:   1:   2:Table1   3:TABLE
      

  10.   

    嗯,我知道了。获得 Access 数据库中所有的表名:            OleDbConnection odconn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\BF\northwind.mdb");
                odconn.Open();            DataTable  dtc = odconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });            Console.WriteLine("dtc.Rows.Count = {0} ",dtc.Rows.Count);
                Console.WriteLine("dtc.Cols.Count = {0} ", dtc.Columns.Count);            Console.WriteLine();
                foreach (DataColumn  item in dtc.Columns )
                {
                    Console.WriteLine("{0,19}  {1}", item.ColumnName, item.DataType);
                }            Console.WriteLine();
                foreach (DataRow  item in dtc.Rows )
                {
                    Console.WriteLine(item["TABLE_NAME"]);
                }
      

  11.   

    再问一个问题:
    设表名为: "TABLE NAME"
    为什么 odcomm.CommandText = "select * from TABLE NAME";和 odcomm.CommandText = "select * from \"TABLE NAME\"";都不行呢?
      

  12.   

    为什么这样写不行呢,表名“Order Details” 中间有一个空格。
       odcomm.CommandText = "select * from \"Order Details\"";
                odcomm.CommandText = "select * from Order Details";