自动创建表 如何用VC实现在access数据库中自动生产表?当数据太多的时候,我担心access的查询修改的效率会很低,所以我想到一定规模的时候自动再生成新的表,如一个月创建一个表,怎么能在程序中自动实现呢?另外再请问一个表的记录数最大是多少? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接用_ConnectionPtr的Execute方法执行create table的SQL语句就可以创建表 你查查以前的帖子很多的。 m_pConnection->Execute("CREATE TABLE users1(ID INTEGER,username TEXT,old INTEGER,birthday DATETIME)",&RecordsAffected,adCmdText); Create table1.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); m_pConnection->Execute("CREATE TABLE users1(ID INTEGER,username TEXT,old INTEGER,birthday DATETIME)",&RecordsAffected,adCmdText);可以生成表,但是,如何自动生成??? 引入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对表进行操作了 ado中的recordset中find函数怎么使用呀?例如我要根据一个字段值查找对应的记录,怎样用find函数实现? 单文档做的数控界面上怎么显示坐标值的变换??? 基类派生类的指针转换问题 ontooltiptext!! 求《代码阅读方法与实践》配书光盘 datagrid中的表格如何填充整个控件 关于窗口样式的问题 快乐散分!个人论坛做好了,大家支持啊!up有分 各位高手,救救俺吧,实在是搞得头晕了,分数不是问题!!!! 有没有这样的程序阅读工具? 屏幕保护程序与控制面板的关系(欢迎讨论) CListCtrl 控制 如何去掉CEditView的自动保存功能?
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);
但是,如何自动生成???
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对表进行操作了