| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3109 人关注过本帖
标题:请问如何用 C#新建一个Access .mdb
只看楼主 加入收藏
jtain
Rank: 1
来 自:台北
等 级:新手上路
帖 子:18
专家分:3
注 册:2011-11-20
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
请问如何用 C#新建一个Access .mdb
我去MS有找到一个说明
加入参考[COM]->Microsoft ADO Ext. 2.7 for DDL and Security (ADOX)
ps.我的电脑里是 2.8

然后
using ADOX;
    string MDBname = (
                    System.Windows.Forms.Application.ExecutablePath);
    MDBname = (MDBname, "MDB");

    if (File.Exists(MDBname)) return;
 
    String s1 = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                        "Data Source=" + MDBname +
                        ";Jet OLEDB:Engine Type=5";

    ADOX.CatalogClass cat = new ADOX.CatalogClass();
            cat.Create(s1);
            cat = null;

但是会产生如下的错误:
错误 CS1752: 无法内嵌 Interop 型别 'ADOX.CatalogClass'。请改用适当的介面。

是哪里有错?
还是有其他方法?


[ 本帖最后由 jtain 于 2011-12-27 14:41 编辑 ]
搜索更多相关主题的帖子: Microsoft return 如何 
2011-12-27 14:25
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:10 
Access数据库虽然在某些方面上比不上专业级的SQL等数据库,但在一些小型应用以及其便携方便的特点,使我们不得不研究一下。无须安装Office软件,只需系统中安装有MDAC 2.7或是2.8数据库组件,就可以方便的使用该数据库,当然了,MDAC组件微软都帮我们准备好了,只要是Windows NT, XP, 2003操作系统,自带,所以我们之要利用该组件既可。本次研究,主要是为了C#的代码自动生成的一个辅助代码,解决Access库的创建,表的创建,以及Access字段的数据类型与Jet引擎之间的关系。

    数据库的创建很Easy,主要使用的是ADOX这个COM组件来完成,而其它表的创建等,则使用Jet OLEDB SQL来进行创建。在项目中引入ADODB(Microsoft ActiveX Data Objects 2.8 Library),及(ADOX)Microsoft ADO Ext. 2.8 for DDL and Security两个COM组件。下面的示例代码进行了简单的封装:

        /// <summary>
        /// 创建Access数据库
        /// </summary>
        /// <param name="path">文件和文件路径</param>
        /// <returns>真为创建成功,假为创建失败或是文件已存在</returns>
        public bool CreateAccessDatabase(string path)
        {
            //如果文件存在反回假
            if (File.Exists(path))
                return false;

            try
            {
                //如果目录不存在,则创建目录
                string dirName = Path.GetDirectoryName(path);
                if (!Directory.Exists(dirName))
                {
                    Directory.CreateDirectory(dirName);
                }

                //创建Catalog目录类
                ADOX.CatalogClass catalog = new ADOX.CatalogClass();
                _connectionStr = getConnectionString(path);
                //根据联结字符串使用Jet数据库引擎创建数据库
                catalog.Create(_connectionStr);
                //得到当前活动连接对象接口
                ADODB.Connection adoconn = catalog.ActiveConnection as ADODB.Connection;
                //关闭活动连接
                adoconn.Close();
                //释放类资源
                catalog = null;
               
                return true;
            }
            catch (Exception)
            {
                throw new Exception("数据库创建失败!");
            }
        }

我们都在路上。。。。。
2011-12-27 15:18
jtain
Rank: 1
来 自:台北
等 级:新手上路
帖 子:18
专家分:3
注 册:2011-11-20
收藏
得分:0 
还是一样的错误

对了底下还会有一个错误(原先就有)
错误 CS0143: 型别 'ADOX.CatalogClass' 没有已定义的建构函式

那个 CS1752 错误其实会有2个,分别指向 CatalogClass

快乐不需要理由

Visual Studio 2010 Pro 繁体中文版
XP sp3 繁体中文版
2011-12-27 16:19
jtain
Rank: 1
来 自:台北
等 级:新手上路
帖 子:18
专家分:3
注 册:2011-11-20
收藏
得分:0 
补上完整的错误讯息,没有人知道这是怎么一回事?

Form2.cs(105,18): 错误 CS1752: 无法内嵌 Interop 型别 'ADOX.CatalogClass'。请改用适当的介面。
Form2.cs(105,46): 错误 CS1752: 无法内嵌 Interop 型别 'ADOX.CatalogClass'。请改用适当的介面。
Form2.cs(105,37): 错误 CS0143: 型别 'ADOX.CatalogClass' 没有已定义的建构函式

快乐不需要理由

Visual Studio 2010 Pro 繁体中文版
XP sp3 繁体中文版
2011-12-28 15:13
快速回复:请问如何用 C#新建一个Access .mdb
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.089681 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved