如何用VC实现在access数据库中自动生产表?当数据太多的时候,我担心access的查询修改的效率会很低,所以我想到一定规模的时候自动再生成新的表,如一个月创建一个表,怎么能在程序中自动实现呢?另外再请问一个表的记录数最大是多少?

解决方案 »

  1.   

    直接用_ConnectionPtr的Execute方法执行create table的SQL语句就可以创建表 你查查以前的帖子很多的。
      

  2.   

    m_pConnection->Execute("CREATE TABLE users1(ID INTEGER,username TEXT,old INTEGER,birthday DATETIME)",&RecordsAffected,adCmdText);
      

  3.   

    Create table
    1.stdafx.h中加入
    #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") 
    2。app文件的InitInstance中加入
    if(S_OK!=OleInitialize(NULL))
    {
    AfxMessageBox("初始化COM组件库错误");
    }
    下面就是数据库操作
    _ConnectionPtr pConn;
    _RecordsetPtr  pRs;
    CString strSQL;
    pConn.CreateInstance(__uuidof(Connection));
    pConn->CursorLocation=adUseClient;
    strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";
    pConn->Open(_bstr_t(strSQL),"","",-1);pRs.CreateInstance(__uuidof(Recordset));
    pRs->CursorLocation=adUseClient;
    pRs->PutActiveConnection(pConn.GetInterfacePtr());pRs1.CreateInstance(__uuidof(Recordset));
    pRs1->CursorLocation=adUseClient;
    pRs1->PutActiveConnection(pConn.GetInterfacePtr());strSQL="select * from catalog order by cataid";
    pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);
      

  4.   

    m_pConnection->Execute("CREATE TABLE users1(ID INTEGER,username TEXT,old INTEGER,birthday DATETIME)",&RecordsAffected,adCmdText);可以生成表,
    但是,如何自动生成???
      

  5.   

    引入ado,adox;然后定义
    ADODB::_ConnectionPtr m_pConnection;
    ADODB::_RecordsetPtr m_pRecordset;
    对m_pConnection,m_pRecordset初始化,然后连接数据库用m_pConnection;成功后建表
    try{
    _TablePtr m_pTable;
    m_pTable.CreateInstance(__uuidof(Table));//初始化 
    m_pTable->Name=_bstr_t(str1);    //创建表名
            ADOX::ColumnsPtr pCols=m_pTable->Columns; //创建列指针
    pCols->Append(_T("列名"),ADOX::adInteger,0); //添加列
    ..................
            m_pCatalog->Tables->Refresh();
    long total=pCols->Count;
            for(float i=0;i<total;i++)
    pCols->GetItem(i)->ParentCatalog=m_pCatalog;//重要!设置Catalog pCols->GetItem(_T("列名"))->Properties->GetItem(_T("Description"))->Value=_T("对列的说明");//注释
            pCols->GetItem(_T("列名"))->Properties->GetItem(_T("AutoIncrement"))->Value=false;//自动编号
    m_pCatalog->Tables->Append(_variant_t((IDispatch*)m_pTable));//添加表(即自动建表)
    m_pCatalog->Tables->Refresh(); ADOX::_IndexPtr pIndex=NULL;   //索引
    pIndex.CreateInstance(_T("ADOX.Index"));
    pIndex->Name="SaveTimeIndex";  //索引名
    pIndex->Columns->Append("SaveTimeIndex",ADOX::adInteger,0);  
    pIndex->PutPrimaryKey(-1);  //主索引
    pIndex->PutUnique(-1);      //唯一值
    m_pTable->Indexes->Append(_variant_t((IDispatch*)pIndex)); //添加索引
    pIndex=NULL;  
    m_pCatalog->Tables->Refresh();
            //打开表
    m_pRecordset->Open(_variant_t(str1),_variant_t((IDispatch *)m_pConnection,true),adOpenKeyset,adLockOptimistic,adCmdTable); 
            ...............
    }
    打开表够就可以用m_pRecordset对表进行操作了
      

  6.   

    ado中的recordset中find函数怎么使用呀?例如我要根据一个字段值查找对应的记录,怎样用find函数实现?