http://dotnet.aspx.cc/article/89137097-0313-4197-aebf-116e391e354a/read.aspx

解决方案 »

  1.   

    我看了楼上的提供的文章,做出了如下代码:string connstr="Provider=Microsoft.Jet.Oledb.4.0;Data Source="
    +Server.MapPath(ConfigurationSettings.AppSettings["数据库路径"])+";"; ADOX.CatalogClass MyDB=new ADOX.CatalogClass();
    ADOX.TableClass MyTable=new ADOX.TableClass();
    MyDB.ActiveConnection =connstr;
    MyTable.ParentCatalog=MyDB;
    MyTable.Name="memo";
    MyTable.Columns[MyFieldName].Name = strNewName;-------------------------------------------------------------------------------
    但是运行起来有报错啊...参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
    错误行:MyDB.ActiveConnection =connstr;
      

  2.   

    ADOX.没用过,一般用ADO,ADO.NET,给你贴一份在c#中使用ado的代码:1、在net项目里添加adodb的引用:(打开引用对话框的第二项就是)
       程序头添加:
      using ADODB;
    2、具体程序:        private void button1_Click(object sender, EventArgs e)
            {
                Connection cn = new Connection();
                Recordset rec = new Recordset();            string strCnn=""Data Source=(local);Initial Catalog=LineMonitor;"
                               + "Integrated Security=SSPI;";";
                string strSQL = "Select * from UserManager";            try
                {
                    cn.Open(strCnn, "", "", -1);
                    rec.Open(strSQL, cn, CursorTypeEnum.adOpenStatic,              LockTypeEnum.adLockOptimistic, -1);                //这里加上你要操作的代码
                    rec.Close();
                    cn.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
      

  3.   


    //创建access数据库
                ADOX.Catalog cat = new ADOX.Catalog();
                cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/123.mdb");Jet OLEDB:Engine Type=5");
                //连接access数据库
                ADODB.Connection conn = new ADODB.Connection();
                conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/123.mdb");Jet OLEDB:Engine Type=5", null, null, -1);
                cat.ActiveConnection = conn;
    同时我想问下,为什么我这样设置默认值、是否可为空值就不行呢?ADOX.Column col = new ADOX.Column();
    col.Name = "xxxxxxxxxx";
    col.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
    col.Properties["Default"].Value = false;
    tb.Columns.Append(col, ADOX.DataTypeEnum.adDBDate, 8);请高手去这里帮我看看
    http://topic.csdn.net/u/20080225/13/75a3f94b-07f3-477d-ad3a-bd9bbaba407d.html?seed=456995098
      

  4.   

    如果楼主要改列名的表数据量不算大的话,可以这样进行,先增加一列[新字段名],字段类型什么的与原字段相同,
    然后将新增列的值更新成原列的值,最后删除原来的列
    下面是一段示例代码,            OleDbConnection conn = new OleDbConnection( @"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=E:\Simple.mdb;" );
                conn.Open();            OleDbCommand cmd = new OleDbCommand();
                cmd.Connection = conn;
                
                //增加新列名,除列名不同之外,字段类型、宽度等应该与原列相同
                cmd.CommandText = "ALTER TABLE TEST ADD [newField] varchar(10) ";
                cmd.ExecuteNonQuery();            //将原列的内容复制到新列中
                cmd.CommandText = "UPDATE TEST SET [newField]=[oldField] ";
                cmd.ExecuteNonQuery();            //删除原列(旧列)
                cmd.CommandText = "ALTER TABLE TEST DROP COLUMN [oldField]  ";
                cmd.ExecuteNonQuery();            conn.Close();