C#创建access2007数据库

CZLJ2008 2013-11-12 04:51:39
各位老师高手大家好,请教一个问题:
1、我的电脑是win8,64位。
2、我在vs2008下开发access2007数据库,C#创建access2007数据库,提示错误,请赐教。详见附图,谢谢!!


3、数据库引擎已经安装,源码如下,谢谢赐教!


private void button1_Click(object sender, EventArgs e)
{
//连接串换成Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin;Password=;解决了。
string accdb = this.textBox1.Text; // "d:\\test.accdb";//"d:\\test2.accdb"; //
if (System.IO.File.Exists(accdb)) System.IO.File.Delete(accdb);
ADOX.Catalog cat = new ADOX.Catalog();

cat.Create("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + accdb);
//cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + accdb);

ADOX.Table tbl = new ADOX.Table();
tbl.ParentCatalog = cat;

tbl.Name = "Table1";

//增加一个自动增长的字段
ADOX.Column col = new ADOX.Column();
col.ParentCatalog = cat;
col.Type = ADOX.DataTypeEnum.adInteger; // 必须先设置字段类型
col.Name = "id";
col.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
col.Properties["AutoIncrement"].Value = true;
tbl.Columns.Append(col, ADOX.DataTypeEnum.adInteger, 0);

//增加一个文本字段
ADOX.Column col2 = new ADOX.Column();
col2.ParentCatalog = cat;
col2.Name = "Description";
col2.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
tbl.Columns.Append(col2, ADOX.DataTypeEnum.adVarChar, 25);

//增加数字字段
ADOX.Column col3 = new ADOX.Column();
col3.ParentCatalog = cat;
col3.Name = "数字";
col3.Type = ADOX.DataTypeEnum.adDouble;
col3.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
tbl.Columns.Append(col3, ADOX.DataTypeEnum.adDouble, 666);

//增加Ole字段
ADOX.Column col4 = new ADOX.Column();
col4.ParentCatalog = cat;
col4.Name = "Ole类型";
col4.Type = ADOX.DataTypeEnum.adLongVarBinary;
col4.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
tbl.Columns.Append(col4, ADOX.DataTypeEnum.adLongVarBinary, 0);
//设置主键
tbl.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "id", "", "");
cat.Tables.Append(tbl);

System.Runtime.InteropServices.Marshal.ReleaseComObject(tbl);
System.Runtime.InteropServices.Marshal.ReleaseComObject(cat);
tbl = null;
cat = null;
GC.WaitForPendingFinalizers();
GC.Collect();


MessageBox.Show("创建完成!");
}





...全文
207 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
燚之四火 2014-04-15
  • 打赏
  • 举报
回复
jiaoshiyao 试试项目上右键-〉生成-生成平台-〉x86 你的是AnyCpu的吧 用这个方法
燚之四火 2014-04-15
  • 打赏
  • 举报
回复
引用 5 楼 mjp1234airen4385 的回复:
access2007 用这个Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydata 数据驱动不对。 你用vs连接一个access2007,用那个连接串才好。
的确是你这个问题,我之前本地(32位 win7 office07)都可以, 但是在人家 win8 64位就不可以,我估计是 AccessDatabaseEngine是需要32位的
CZLJ2008 2013-11-14
  • 打赏
  • 举报
回复
jiaoshiyao(项目上右键-〉生成-生成平台-〉x86) 的方法可以解决以上问题,谢谢了
jiaoshiyao 2013-11-13
  • 打赏
  • 举报
回复
试试项目上右键-〉生成-生成平台-〉x86 你的是AnyCpu的吧
mjp1234airen4385 2013-11-13
  • 打赏
  • 举报
回复
access2007 用这个Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydata 数据驱动不对。 你用vs连接一个access2007,用那个连接串才好。
CZLJ2008 2013-11-13
  • 打赏
  • 举报
回复
很可能AccessDatabaseEngine不支持win8,不知版主、专家同意此观点吗?
CZLJ2008 2013-11-13
  • 打赏
  • 举报
回复
AccessDatabaseEngine 支持的操作系统: Windows Server 2003 Service Pack 1; Windows Vista; Windows XP Service Pack 2
CZLJ2008 2013-11-13
  • 打赏
  • 举报
回复
我的电脑是win8,64位的;office access 2007是32位,数据库引擎已经安装,测试程序还是提上上图的错误。 AccessDatabaseEngine不支持win8,64位?奇怪了,郁闷!
threenewbee 2013-11-12
  • 打赏
  • 举报
回复
access数据库驱动没装好 http://blog.sina.com.cn/s/blog_6cb1f1c50100rtlv.html

110,571

社区成员

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

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

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