大家好,我是一个新手,第一次提问,请多指教
1.请问怎样在c#中获得access中包含的表的数量,因为设计的程序是对一个不知道数量的数据库文件进行操作,所以需要知道表的数量进行导入,如果能有一种函数将所有的表直接导入到dataset中也可以2.在数据库中,需要区分1.1和1.10这样的数据,我没发现怎样用“数字”这种类型存储,我用文本这一类型存储的,但是导入到c#中,用convert.tosingle()和float.parse()都会使最后一位的0丢失,请各位大侠帮帮我啊!
多谢多谢了!!!

解决方案 »

  1.   

    1      OleDbConnection _ExcelConn = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =???.MDB; User ID =;Password=");
                        _ExcelConn.Open();
                        DataTable _Table = _ExcelConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);2 如果是数据类型 使用.ToString("0.00");
      

  2.   

    第二个问题,只要你放入double、float等,你就无须关注后头的0是否还存在了,关键在于你输出时要精确到几个小数位Access中数字字段默认是int型,你需要改成单精度或者双精度型就可以存储小数
      

  3.   

    .ToString("F2");//保留小数点后两个0.ToString("F1");//小数点后一个0
      

  4.   

    2. 导入到c#中,直接用字符串类型,.ToString(),不要转换成 float。
      

  5.   

    (1).获取表的信息。
    System.Data.OleDb.OleDbConnection DB_Connect = new System.Data.OleDb.OleDbConnection();
    System.Data.DataTable DataTable = null;
    string OleDb_ConnStr  = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + @"C:\Test.mdb";

    try
    {
    DB_Connect.ConnectionString = _OleDB_ConnStr;

    DataTable = DB_Connect.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

                                    //DataTable.Rows.Count即为Access数据库的表数量,具体表的名称,可以在DataTable中取出

    DB_Connect.Close();
    }
    catch (OdbcException ex)
    {
                                    //
    }
    finally
    {
    DB_Connect = null;
    DataTable = null;
    }(2).在C#中在读取显示时可以用string.Format()函数格式化成你需要的格式,因为你的数据表的字段类型本身就是文本型的。
      

  6.   

    抱歉,代码少了一行(红色字)
    System.Data.OleDb.OleDbConnection DB_Connect = new System.Data.OleDb.OleDbConnection();
    System.Data.DataTable DataTable = null;
    string OleDb_ConnStr  = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + @"C:\Test.mdb";

    try
    {
    DB_Connect.ConnectionString = _OleDB_ConnStr;
    DB_Connect.Open();
    DataTable = DB_Connect.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

                                    //DataTable.Rows.Count即为Access数据库的表数量,具体表的名称,可以在DataTable中取出

    DB_Connect.Close();
    }
    catch (OdbcException ex)
    {
                                    //
    }
    finally
    {
    DB_Connect = null;
    DataTable = null;
    }
      

  7.   

    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path;
      System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn);
      if (conn.State == ConnectionState.Closed)conn.Open();
       System.Data.DataTable table = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
      foreach (System.Data.DataRow drow in table.Rows)
       {
        string TableName = drow["Table_Name"].ToString();
       Console.WriteLine(TableName + ":");
        System.Data.DataTable tableColumns = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Columns, new object[] { null, null, TableName, null });
       foreach (System.Data.DataRow drowColumns in tableColumns.Rows)
        {
          string ColumnName = drowColumns["Column_Name"].ToString();
            Console.WriteLine(" " + ColumnName);
        }
         }
        Console.ReadKey(true);或
    SELECT MSysObjects.Name FROM MsysObjects WHERE (Left([Name],1)<>"~") AND (MSysObjects.Type)=5 ORDER BY MSysObjects.Name;
      

  8.   

    谢谢你的回答,用“DataTable.Rows.Count即为Access数据库的表数量,具体表的名称,可以在DataTable中取出 ”这种方式取出的结果正好比里面表的数量多了10,不知道前面那几个字段是做什么用的?