2011-11-01 68 views
0

我有一个MS ACCESS 2003数据库,其中有一个表“TABLEA”。使用OLEDB连接在MS ACCESS 2003中分组对象错误

然后我使用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(); 
      } 

     } 

填写此表后,

我得到这个消息只有一次,每当我打开这一访问datatbase

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

我不知道我错在哪里。我为此目镜了它,但没有得到任何好处。 我觉得在创建表格时有一些问题

任何帮助表示赞赏。

回答

0

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

2

这是使用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; 
     } 
    }