C#连接access数据库时转换出错!

luohuayouy 2013-03-06 03:31:05
 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#连接数据库。
...全文
77 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
luohuayouy 2013-03-06
  • 打赏
  • 举报
回复
引用 3 楼 puler 的回复:
乖乖用OleDbConnection,后面你再折腾
现在已经改用OleDbConnection了,我现在只是想知道我二楼的代码如何去改。请大侠指教下!3Q
bdmh 2013-03-06
  • 打赏
  • 举报
回复
估计是类型不匹配
puler 2013-03-06
  • 打赏
  • 举报
回复
乖乖用OleDbConnection,后面你再折腾
luohuayouy 2013-03-06
  • 打赏
  • 举报
回复
   
            
                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; 这几句如何改呢????
gxingmin 2013-03-06
  • 打赏
  • 举报
回复
为什么要用Adox?多古董的东西啊,这两个类型不能相互转换 都用OleDbConnection不行吗?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧