现我想用ADO去修改一个表的结构,如增加默认值,修改默认值,不知该如何下手,请高手指点,谢谢!

解决方案 »

  1.   

    用SQL建立索引为了给一个表建立索引,启动任务栏SQL Sever程序组中的ISQL/w程序。进入查询窗口后,输入下面的语句:CREATE INDEX mycolumn_index ON mytable (myclumn)这个语句建立了一个名为mycolumn_index的索引。你可以给一个索引起任何名字,但你应该在索引名中包含所索引的字段名,这对你将来弄清楚建立该索引的意图是有帮助的。注意:在本书中你执行任何SQL语句,都会收到如下的信息:This command did not return data,and it did not return any rows这说明该语句执行成功了。索引mycolumn_index对表mytable的mycolumn字段进行。这是个非聚簇索引,也是个非唯一索引。(这是一个索引的缺省属性)如果你需要改变一个索引的类型,你必须删除原来的索引并重建 一个。建立了一个索引后,你可以用下面的SQL语句删除它:DROP INDEX mytable.mycolumn_index注意在DROP INDEX 语句中你要包含表的名字。在这个例子中,你删除的索引是mycolumn_index,它是表mytable的索引。要建立一个聚簇索引,可以使用关键字CLUSTERED。)记住一个表只能有一个聚簇索引。(这里有一个如何对一个表建立聚簇索引的例子:CREATE CLUSTERED INDEX mycolumn_clust_index ON mytable(mycolumn)如果表中有重复的记录,当你试图用这个语句建立索引时,会出现错误。但是有重复记录的表也可以建立索引;你只要使用关键字ALLOW_DUP_ROW把这一点告诉SQL Sever即可:CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn)WITH ALLOW_DUP_ROW这个语句建立了一个允许重复记录的聚簇索引。你应该尽量避免在一个表中出现重复记录,但是,如果已经出现了,你可以使用这种方法。默认值是要用alter table修改的
      

  2.   

    m_pConnection->Execute("ALTER TABLE ADD TEST INT NULL"...............
    之类的语句
      

  3.   

    access 是不支持degault关键字,我想问的是那我应该怎么做呢?
      

  4.   

    在access 中,我想用alter table table_a alter column field_a int null讲字段field_a 该为null,但执行后field_a还是not null,应该怎么解决呢?
      

  5.   

    access 是不支持default关键字,我想问的是那我应该怎么做呢?
      

  6.   

    ALTER  COLUMN  Address  TEXT(40)  DEFAULT  Unknown  
    注意:  DEFAULT  语句只有在Jet  OLE  DB  provider和ADO中可以执行,在Access  SQL  View的用户界面中使用将会返回错误信息。
      

  7.   

    真的非常感谢楼上,能否再告诉我在access里怎样讲一个not null 字段改为null字段呢?我先用alter table table_a alter column field_a int not null后,再用
    alter table table_a alter column field_a int null讲字段field_a 该为null,但执行后field_a还是not null,应该怎么解决呢?这问题若不解决,我的程序还是没完成,还是要用ADO修改那not null改为null啊!希望得到楼上和大家的帮忙,解决这问题,谢谢!
      

  8.   

    pRecordSet = m_pConnectionPtr->OpenSchema(adSchemaTables);
    _variant_t var;
    char szTableType[256] = {0};
    while (!pRecordSet->adoEOF)
    {
    var = pRecordSet->GetCollect("TABLE_TYPE");  
    if (var.vt != VT_NULL)
    {
    strcpy(szTableType, _bstr_t(var));
    if(stricmp(szTableType, "TABLE") == 0)
    {
    var = pRecordSet->GetCollect("TABLE_NAME");
    strcpy(szTableType, _bstr_t(var));
    if (stricmp(szTableType,"table_a")  == 0)
    {
        //然后要做什么处理呢?

    }
    }
    pRecordSet->MoveNext();
    }以上是我想用ado修改字段的not null改为null的一段没完成的程序,不知要怎么做了,请指点,用什么函数去定我要修改的字段呢?有怎么修改呢?我现在已经找到那个表了!
    希望给个例子,或查找这方面的资料,谢谢!
      

  9.   

    _CommandPtr m_pCommand;
    m_pCommand.CreateInstance(__uuidof(Command));
    CString strSQL;
    strSQL = "ALTER TABLE table_a ALTER COLUMN field_a INT NULL";
    try
    {
            m_pCommand->ActiveConnection = m_pConnection;
    m_pCommand->CommandText = (_bstr_t)strSQL;
    m_pCommand->Execute(NULL, NULL, adCmdText);
    }
    catch(_com_error e)
    {
    ..........
    }
      

  10.   

    楼上,请问哪有ADO这方面的详细介绍和例子讲解啊?我觉得你很厉害,真的!有这方面的资料吗?我想多学习,以后我会经常用到!我是新手,请多多指教啊!