【问题标题】:Grouping Objects Error in MS ACCESS 2003 using OLEDB connection使用 OLEDB 连接的 MS ACCESS 2003 中的分组对象错误
【发布时间】:2011-12-19 06:17:23
【问题描述】:

我有一个 MS ACCESS 2003 数据库,其中有一个表“TABLEA”。

然后我使用 OLEDB 连接并创建一个表,然后以编程方式将数据填充为:

 string create_table_script = @" CREATE TABLE [" + Path.GetFileNameWithoutExtension(filename) + @"](
                        [AutoID] COUNTER PRIMARY KEY  ,
                        [CAS] text(255) ,
                        [Listed French Ingredient No] text(255) ,
                        [Name] text(255) ,
                        [GC] text(20) ,
                        [Grp_Code] text(10) ,
                        [Galsyn] Memo ,
                        [Notes LCN] text(255) ,
                        [Notes LFIN] text(255) ,
                        [%w/w] text(255) )";



        string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + fullpath + ";" + " User Id=admin; Password=";

        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            OleDbCommand SelectCommand = new OleDbCommand(create_table_script, connection);

            connection.Open();

            try
            {
                SelectCommand.ExecuteNonQuery();

            }
            catch (OleDbException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                connection.Close();
            }

        }

填完这张表后,

每当我打开此访问数据库时,我只会收到一次此消息

"31613 您已选择“表和相关视图”作为对数据库中的对象进行分组的方式。Access 需要更新有关对象依赖关系的信息才能创建组。这对于大型数据库将需要一些时间。您要继续?”

我不知道我错在哪里。我为此目瞪口呆,但没有得到任何好处。 我认为创建表有问题

感谢任何帮助。

【问题讨论】:

    标签: ms-access oledb ddl


    【解决方案1】:

    这是使用 C# 代码创建 MS Access 表的最佳方式。

    public string con_string;       
    public OleDbConnection My_conn;// = new OleDbConnection();
    public OleDbDataAdapter My_ada;
    public OleDbCommand cmd;
    public DataSet myds;// = new DataSet();
    public void Make_Connention()
        {
    
    
            {
                con_string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =";
                con_string += AppDomain.CurrentDomain.BaseDirectory.ToString() + "<yourdb>.mdb";
            }            
            My_conn = new OleDbConnection();
            My_conn.ConnectionString = con_string;
        }
    public void IF_EXISTS_DELETE_AND_CREATE()
        {
            try
            {
                Make_Connention();
                string cn = con_string;
                OleDbConnection connection = new OleDbConnection(cn);
                object[] objArrRestrict;
                objArrRestrict = new object[] { null, null, null, "TABLE" };
                connection.Open();
                DataTable schemaTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, objArrRestrict);
                connection.Close();
                string[] list;
                if (schemaTable.Rows.Count > 0)
                {
                    list = new string[schemaTable.Rows.Count];
                    int i = 0;
                    foreach (DataRow row in schemaTable.Rows)
                    {
                        list[i++] = row["TABLE_NAME"].ToString();
                    }
                    for (i = 0; i < list.Length; i++)
                    {
                        if (list[i] == "TEMP")
                        {
                            string deletedl = "DROP TABLE TEMP";
                            using (OleDbConnection conn = new OleDbConnection(cn))
                            {
                                using (OleDbCommand cmd = new OleDbCommand(deletedl, conn))
                                {
    
                                    conn.Open();
                                    cmd.ExecuteNonQuery();
                                    conn.Close();
                                }
                            }
                            break;
                        }
                    }
                }
                string ddl = "CREATE TABLE TEMP (ID COUNTER,USERID INTEGER NOT NULL,[ADATE] TEXT(20), [ATIME] TEXT(20))";
                using (OleDbConnection conn = new OleDbConnection(cn))
                {
                    using (OleDbCommand cmd = new OleDbCommand(ddl, conn))
                    {
                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                    }
                }
            }
            catch (System.Exception e)
            {
                string ex = e.Message;
            }
        }
    

    【讨论】:

      【解决方案2】:

      这是关于“导航窗格(快门栏)”中导航的访问问题,与您创建表格的方式无关。您可以放心地忽略此问题,因为它是 Access 特定的并且与 OleDb 无关

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-20
        • 1970-01-01
        • 2013-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多