上次问的是ado下得到mdb文件所有表格。代码如下
///This is a sample in MSDN
///here , m_tablesList is a listbox
/// goog luck!
_bstr_t tablesNames;
CString kooky;
m_tablesList.ResetContent();
UpdateData( TRUE);
try
{
m_recordSet = m_connection->OpenSchema (adSchemaTables,vtMissing,vtMissing);
while (!m_recordSet->EOF )
{
tablesNames = m_recordSet->Fields->Item[L"TABLE_NAME"]->Value;
kooky = (char*) tablesNames;
if (kooky.Left(4) != "MSys")
m_tablesList.AddString( kooky );//添加表名到控件显示
m_recordSet->MoveNext();}
}
catch(...) {}
UpdateData( FALSE );
m_recordSet = NULL;
==================
但这个代码无法得到sqlserver的表格,或者说得到的太多了不是真正的表格名称!
我的连接sqlserver代码如下:
Provider=SQLOLEDB.1;Data Source= 127.0.0.1;User ID=sa;Password=sa;Initial Catalog=master;
恳请大家赐教!
///This is a sample in MSDN
///here , m_tablesList is a listbox
/// goog luck!
_bstr_t tablesNames;
CString kooky;
m_tablesList.ResetContent();
UpdateData( TRUE);
try
{
m_recordSet = m_connection->OpenSchema (adSchemaTables,vtMissing,vtMissing);
while (!m_recordSet->EOF )
{
tablesNames = m_recordSet->Fields->Item[L"TABLE_NAME"]->Value;
kooky = (char*) tablesNames;
if (kooky.Left(4) != "MSys")
m_tablesList.AddString( kooky );//添加表名到控件显示
m_recordSet->MoveNext();}
}
catch(...) {}
UpdateData( FALSE );
m_recordSet = NULL;
==================
但这个代码无法得到sqlserver的表格,或者说得到的太多了不是真正的表格名称!
我的连接sqlserver代码如下:
Provider=SQLOLEDB.1;Data Source= 127.0.0.1;User ID=sa;Password=sa;Initial Catalog=master;
恳请大家赐教!
解决方案 »
- 控件字体的问题 高手看看
- 怎样让CTreeCtrl的每一个ITEM都能显示出一个文件夹图标来??就象WINDOWS资源管理器那样.
- 我建了一个mfc单文档应用程序,不小心把工具栏上的fileNew给删了,我重新加上以后,就没有原来的功能了。
- 一个超难算法问题,高手请进
- 2000下dll用到setupapi.lib,98下无法调用dll
- 寻<<vc技术内幕>>,<<深入浅出mfc>>,要中文版的,能提供的即送50分相谢!
- 请教高手格式转换
- 手动,如何将注册表中浏览过的网页的纪录删除???
- 求助,关于绘图的小问题。
- 监听UDP端口数据包
- 恳请各位给我解决一下这个小问题!!谢谢
- const char * 如何变成char *?
1.
select name from sysobjects where xtype='U'2.
select 表名=name from sysobjects where objectproperty(id,'isusertable')=1关于ado执行sql语句,论坛里面有很多例子,你搜索一下
在系统目录下面有个DBNETLIB.DLL,说白了也是从注册表里读出来的
我和同学用的同一张VC安装盘,系统同是2000,结果他的VC里有ADO Data控件,可是我的却没有,这是为什么啊?我怎样才能插入ADO Data控件啊?
说具体点就是如何在下面步骤的结果中能填加ADO控件:
VC6.0/新建工程/Project/Add to Project/Components and Controls/打开Gallery/打开Registered ActiveX Controls
上面的文件夹里应该有Microsoft ADO Data Control这个控件的,可是我却没有,怎么回事事?
_bstr_t table_name = pRst->Fields->GetItem("TABLE_NAME")->Value;
_bstr_t table_type = pRst->Fields->GetItem("TABLE_TYPE")->Value;
if ( strcmp(((LPCSTR)table_type),"TABLE")==0) //过滤一下,只输出表格名称,其他的省略
{
//TODO:Add your command!
}
inpriser(旺旺)朋友的方法好象不行,没任何显示。要不给我一个具体代码?谢谢。
xuzheng318(forever C++) 朋友的方法我是菜鸟不懂,感觉太复杂。谢谢。还问大家一下,有什么方法能得到sqlserver所有的数据库,例如master,model,pubs之类的名字?
谢谢!
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");
if SUCCEEDED(hr)
{
hr=m_pConnection->Open("Provider=SQLOLEDB.1;Data Source=yf;Initial Catalog=wheel","sa","",adConnectUnspecified);
pRst= m_pConnection->OpenSchema(adSchemaTables);
while(!(pRst->EndofFile))
{
_bstr_t table_name = pRst->Fields->GetItem("TABLE_NAME")->Value;
_bstr_t table_type = pRst->Fields->GetItem("TABLE_TYPE")->Value;
if ( strcmp(((LPCSTR)table_type),"TABLE")==0)
{
m_ListCtrl->AddString(( LPCTSTR )table_name);
}
pRst->MoveNext();
}
pRst->Close();
}
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
你再跟踪调试一下吧。
请问是怎么回事?是不是我那出问题了,我可是copy的哦.
{
_RecordsetPtr Rs1; CString csTemp;
_variant_t varCriteria[4];
LONG lIndex = 0;
HRESULT hr = 0; arrtbName.RemoveAll(); try
{
// Getting primary key information for table "Authors". _bstr_t bstrTableType("Table"); varCriteria[0].vt = VT_EMPTY;
varCriteria[1].vt = VT_EMPTY;
varCriteria[2].vt = VT_EMPTY;
varCriteria[3] = bstrTableType; VARIANT varData;
SAFEARRAY FAR* psa;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = 4;
psa = SafeArrayCreate(VT_VARIANT, 1, rgsabound); // Fill the safe array.
for( lIndex = 0 ; lIndex < 4 ;lIndex++)
{
hr = SafeArrayPutElement(psa, &lIndex,&varCriteria[lIndex]);
}
// Initialize variant with safearray.
varData.vt = VT_VARIANT | VT_ARRAY;
V_ARRAY(&varData) = psa; Rs1 = m_pConnection->OpenSchema(adSchemaTables,varData); int nFieldCount = Rs1->Fields->GetCount();
VARIANT varValue; csTemp.Empty();
while (VARIANT_TRUE != Rs1->GetadoEOF())
{
// Traversing through the Fields collection to get the values.
if(!csTemp.IsEmpty())
csTemp += " ; "; varValue = Rs1->Fields->GetItem(_variant_t((long)2))->Value;
if(varValue.vt == VT_BSTR)
{
csTemp += varValue.bstrVal;
CString strTemp = varValue.bstrVal;
arrtbName.Add( strTemp );
AfxMessageBox( strTemp );
}
else
if(varValue.vt == VT_UI4)
csTemp.Format("%s %l",csTemp,varValue.lVal); Rs1->MoveNext();
}
Rs1->Close();
OutputDebugString(csTemp);
}
catch(_com_error &e)
{
AfxMessageBox(e.ErrorMessage() );
}
}