string Path=System.Windows.Forms.Application.StartupPath + @"\\EBalance.mdb";
            OleDbConnection con;
            con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path);
            if (con.State == ConnectionState.Closed)
            {
                con.Open();
            }
            #endregion
            #region
            ///判断某个数据表是否存在            if (GetTables(con, DataName))  //表存在
            {
                ;
            }
            else  //表不存在
            {
                               //con.Close();
                //MessageBox.Show(Path);
                ADOX.CatalogClass cat = new ADOX.CatalogClass();                //cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path;//这里出错了
                cat.ActiveConnection = con;//这里出错了                ADOX.TableClass tbl = new ADOX.TableClass();
                tbl.ParentCatalog = cat;
                tbl.Name = DataName;
我在连接access数据库时,类型转换出错了。在:cat.ActiveConnection = con;这句提示错误:指定的转换无效。求各位大虾指教指教改赋什么值给 cat.ActiveConnection 呢,本人第一次使用C#连接数据库。accessc#数据库string

解决方案 »

  1.   

    为什么要用Adox?多古董的东西啊,这两个类型不能相互转换
    都用OleDbConnection不行吗?
      

  2.   

       
                
                    ADOX.CatalogClass cat = new ADOX.CatalogClass();
                    
                    //cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path;//这里出错了
                    cat.ActiveConnection = con;//这里出错了                ADOX.TableClass tbl = new ADOX.TableClass();
                    tbl.ParentCatalog = cat;
                    tbl.Name = DataName;                //增加一个自动增长的字段
                    ADOX.ColumnClass col = new ADOX.ColumnClass();
                    col.ParentCatalog = cat;
                    col.Type = ADOX.DataTypeEnum.adInteger; // 必须先设置字段类型
                    col.Name = "序号";
                    col.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
                    col.Properties["AutoIncrement"].Value = true;
                    tbl.Columns.Append(col, ADOX.DataTypeEnum.adInteger, 0);                //增加一个文本字段
                    ADOX.ColumnClass col2 = new ADOX.ColumnClass();
                    col2.ParentCatalog = cat;
                    col2.Name = "箱号";
                    col2.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
                    tbl.Columns.Append(col2, ADOX.DataTypeEnum.adVarChar, 25);                //增加一个文本字段
                    ADOX.ColumnClass col3 = new ADOX.ColumnClass();
                    col3.ParentCatalog = cat;
                    col3.Name = "重量";
                    col3.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
                    tbl.Columns.Append(col3, ADOX.DataTypeEnum.adVarChar, 25);                ADOX.ColumnClass col4 = new ADOX.ColumnClass();
                    col4.ParentCatalog = cat;
                    col4.Name = "记录时间";
                    col4.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
                    tbl.Columns.Append(col4, ADOX.DataTypeEnum.adVarChar, 25);                cat.Tables.Append(tbl);   //这句把表加入数据库(非常重要)
                    //MessageBox.Show("数据库表:" + tbl.Name + "已经创建成功!");
                    tbl = null;
                    con = null;
    这是我在一个access数据库中创建一个数据表的代码,如果用ADO.net如何把创建的表指定到数据库中呢??cat.ActiveConnection = con;//这里出错了                ADOX.TableClass tbl = new ADOX.TableClass();
                    tbl.ParentCatalog = cat;
    这几句如何改呢????
      

  3.   

    乖乖用OleDbConnection,后面你再折腾
      

  4.   

    现在已经改用OleDbConnection了,我现在只是想知道我二楼的代码如何去改。请大侠指教下!3Q