for(long i=0; i < ColCount; i++)//得到记录集//中的字段名
{
//_variant_t lvar(i);
// var.operator shor = i;
//m_pRecordset->get
// varValue[i] = fields->GetItem(lvar)->Value;
strValue = (LPCSTR)_bstr_t(fields->GetItem((long)i)->Value);
m_ListShow.AddString(strValue);
}
得到的是某一行的记录值,现在想获得该表的的各列 的 字段的值,该怎么办?
谢谢!
9 个解决方案
#1
给你一条SQL语句(获取 客户资料表 的所有列名)
Select name From syscolumns
Where Id=(select Id From sysobjects Where name='客户资料表')
Select name From syscolumns
Where Id=(select Id From sysobjects Where name='客户资料表')
#2
用ADOX
#3
access的例子:
(1)在 stdafx.h 加入如下代码引入 ADO 库定义文件,
#import "c:\program files\common files\system\ado\msado15.dll" \ no_namespace \
rename ("EOF", "adoEOF")
(2)初始化COM库,在BOOL CGetFieldNameApp::InitInstance()中添加AfxOleInit();
(3)在类 CgetFieldNameDlg 中添加两个用于打开数据库连接和打开记录集的变量;
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
(4) 在CgetFieldNameDlg的构造函数中添加数据库连接和记录集初始化代码;m_pConnection.CreateInstance(__uuidof(Connection));
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\FTI.mdb",
"",
"",
adModeUnknown );
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败!");
}
m_pRecordset.CreateInstance(__uuidof(Recordset));
(5) 给Listbox控件添加控件变量m_FieldsList;
(6) 在按钮的单击事件中添加相应代码;_bstr_t mStrSQL;
CString strColName;
BSTR bstrColName;
long ColCount,i;
Field * field = NULL;
HRESULT hr;
Fields * fields = NULL;
LPCTSTR nameField;
//打开记录集,得到字段名,并将字段名信息添加到ListBox中
mStrSQL = "SELECT * FROM Images";
m_pRecordset->Open(mStrSQL,
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
hr = m_pRecordset->get_Fields (&fields); //得到记录集的字段集和
if(SUCCEEDED(hr))
fields->get_Count(&ColCount);
//得到记录集的字段集合中的字段的总个数
for(i=0;i
{
fields->Item[i]->get_Name(&bstrColName); //得到记录集//中的字段名
strColName=bstrColName;
nameField = strColName;
m_FieldsList.AddString(nameField);
}
if(SUCCEEDED(hr))
fields->Release();//释放指针
(1)在 stdafx.h 加入如下代码引入 ADO 库定义文件,
#import "c:\program files\common files\system\ado\msado15.dll" \ no_namespace \
rename ("EOF", "adoEOF")
(2)初始化COM库,在BOOL CGetFieldNameApp::InitInstance()中添加AfxOleInit();
(3)在类 CgetFieldNameDlg 中添加两个用于打开数据库连接和打开记录集的变量;
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
(4) 在CgetFieldNameDlg的构造函数中添加数据库连接和记录集初始化代码;m_pConnection.CreateInstance(__uuidof(Connection));
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\FTI.mdb",
"",
"",
adModeUnknown );
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败!");
}
m_pRecordset.CreateInstance(__uuidof(Recordset));
(5) 给Listbox控件添加控件变量m_FieldsList;
(6) 在按钮的单击事件中添加相应代码;_bstr_t mStrSQL;
CString strColName;
BSTR bstrColName;
long ColCount,i;
Field * field = NULL;
HRESULT hr;
Fields * fields = NULL;
LPCTSTR nameField;
//打开记录集,得到字段名,并将字段名信息添加到ListBox中
mStrSQL = "SELECT * FROM Images";
m_pRecordset->Open(mStrSQL,
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
hr = m_pRecordset->get_Fields (&fields); //得到记录集的字段集和
if(SUCCEEDED(hr))
fields->get_Count(&ColCount);
//得到记录集的字段集合中的字段的总个数
for(i=0;i
{
fields->Item[i]->get_Name(&bstrColName); //得到记录集//中的字段名
strColName=bstrColName;
nameField = strColName;
m_FieldsList.AddString(nameField);
}
if(SUCCEEDED(hr))
fields->Release();//释放指针
#4
UP
#5
recordset->fields->field->field_name
#6
fields->GetItem((long)i)->Name 就是字段名
#7
fields->GetItem((long)i)->Name
#8
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset,pRS_Column;
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
_bstr_t strConnect = "Provider=SQLOLEDB; Server="服务器名称";Database="数据库名称";uid="用户名";pwd="密码";
m_pConnection->Open(strConnect,"","",adModeUnknown);
m_pRecordset->Open("表名",m_pConnection.GetInterfacePtr(), adOpenForwardOnly, adLockOptimistic, adCmdTable);
long lColumn = m_pRecordset->Fields->Count;
for(long i=0;i<lColumn;i++)
{
CString strName=(char*)_bstr_t(m_pRecordset->Fields->Item[i]->Name);
}
strName得到的就是字段名称
_RecordsetPtr m_pRecordset,pRS_Column;
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
_bstr_t strConnect = "Provider=SQLOLEDB; Server="服务器名称";Database="数据库名称";uid="用户名";pwd="密码";
m_pConnection->Open(strConnect,"","",adModeUnknown);
m_pRecordset->Open("表名",m_pConnection.GetInterfacePtr(), adOpenForwardOnly, adLockOptimistic, adCmdTable);
long lColumn = m_pRecordset->Fields->Count;
for(long i=0;i<lColumn;i++)
{
CString strName=(char*)_bstr_t(m_pRecordset->Fields->Item[i]->Name);
}
strName得到的就是字段名称
#9
上面最长的2个帖子的方法我试验过了,
都是可行的.
我也正好遇到这个问题,
谢了 :)
都是可行的.
我也正好遇到这个问题,
谢了 :)
#1
给你一条SQL语句(获取 客户资料表 的所有列名)
Select name From syscolumns
Where Id=(select Id From sysobjects Where name='客户资料表')
Select name From syscolumns
Where Id=(select Id From sysobjects Where name='客户资料表')
#2
用ADOX
#3
access的例子:
(1)在 stdafx.h 加入如下代码引入 ADO 库定义文件,
#import "c:\program files\common files\system\ado\msado15.dll" \ no_namespace \
rename ("EOF", "adoEOF")
(2)初始化COM库,在BOOL CGetFieldNameApp::InitInstance()中添加AfxOleInit();
(3)在类 CgetFieldNameDlg 中添加两个用于打开数据库连接和打开记录集的变量;
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
(4) 在CgetFieldNameDlg的构造函数中添加数据库连接和记录集初始化代码;m_pConnection.CreateInstance(__uuidof(Connection));
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\FTI.mdb",
"",
"",
adModeUnknown );
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败!");
}
m_pRecordset.CreateInstance(__uuidof(Recordset));
(5) 给Listbox控件添加控件变量m_FieldsList;
(6) 在按钮的单击事件中添加相应代码;_bstr_t mStrSQL;
CString strColName;
BSTR bstrColName;
long ColCount,i;
Field * field = NULL;
HRESULT hr;
Fields * fields = NULL;
LPCTSTR nameField;
//打开记录集,得到字段名,并将字段名信息添加到ListBox中
mStrSQL = "SELECT * FROM Images";
m_pRecordset->Open(mStrSQL,
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
hr = m_pRecordset->get_Fields (&fields); //得到记录集的字段集和
if(SUCCEEDED(hr))
fields->get_Count(&ColCount);
//得到记录集的字段集合中的字段的总个数
for(i=0;i
{
fields->Item[i]->get_Name(&bstrColName); //得到记录集//中的字段名
strColName=bstrColName;
nameField = strColName;
m_FieldsList.AddString(nameField);
}
if(SUCCEEDED(hr))
fields->Release();//释放指针
(1)在 stdafx.h 加入如下代码引入 ADO 库定义文件,
#import "c:\program files\common files\system\ado\msado15.dll" \ no_namespace \
rename ("EOF", "adoEOF")
(2)初始化COM库,在BOOL CGetFieldNameApp::InitInstance()中添加AfxOleInit();
(3)在类 CgetFieldNameDlg 中添加两个用于打开数据库连接和打开记录集的变量;
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
(4) 在CgetFieldNameDlg的构造函数中添加数据库连接和记录集初始化代码;m_pConnection.CreateInstance(__uuidof(Connection));
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\FTI.mdb",
"",
"",
adModeUnknown );
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败!");
}
m_pRecordset.CreateInstance(__uuidof(Recordset));
(5) 给Listbox控件添加控件变量m_FieldsList;
(6) 在按钮的单击事件中添加相应代码;_bstr_t mStrSQL;
CString strColName;
BSTR bstrColName;
long ColCount,i;
Field * field = NULL;
HRESULT hr;
Fields * fields = NULL;
LPCTSTR nameField;
//打开记录集,得到字段名,并将字段名信息添加到ListBox中
mStrSQL = "SELECT * FROM Images";
m_pRecordset->Open(mStrSQL,
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
hr = m_pRecordset->get_Fields (&fields); //得到记录集的字段集和
if(SUCCEEDED(hr))
fields->get_Count(&ColCount);
//得到记录集的字段集合中的字段的总个数
for(i=0;i
{
fields->Item[i]->get_Name(&bstrColName); //得到记录集//中的字段名
strColName=bstrColName;
nameField = strColName;
m_FieldsList.AddString(nameField);
}
if(SUCCEEDED(hr))
fields->Release();//释放指针
#4
UP
#5
recordset->fields->field->field_name
#6
fields->GetItem((long)i)->Name 就是字段名
#7
fields->GetItem((long)i)->Name
#8
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset,pRS_Column;
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
_bstr_t strConnect = "Provider=SQLOLEDB; Server="服务器名称";Database="数据库名称";uid="用户名";pwd="密码";
m_pConnection->Open(strConnect,"","",adModeUnknown);
m_pRecordset->Open("表名",m_pConnection.GetInterfacePtr(), adOpenForwardOnly, adLockOptimistic, adCmdTable);
long lColumn = m_pRecordset->Fields->Count;
for(long i=0;i<lColumn;i++)
{
CString strName=(char*)_bstr_t(m_pRecordset->Fields->Item[i]->Name);
}
strName得到的就是字段名称
_RecordsetPtr m_pRecordset,pRS_Column;
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
_bstr_t strConnect = "Provider=SQLOLEDB; Server="服务器名称";Database="数据库名称";uid="用户名";pwd="密码";
m_pConnection->Open(strConnect,"","",adModeUnknown);
m_pRecordset->Open("表名",m_pConnection.GetInterfacePtr(), adOpenForwardOnly, adLockOptimistic, adCmdTable);
long lColumn = m_pRecordset->Fields->Count;
for(long i=0;i<lColumn;i++)
{
CString strName=(char*)_bstr_t(m_pRecordset->Fields->Item[i]->Name);
}
strName得到的就是字段名称
#9
上面最长的2个帖子的方法我试验过了,
都是可行的.
我也正好遇到这个问题,
谢了 :)
都是可行的.
我也正好遇到这个问题,
谢了 :)