各位大哥请教该如何显示表里所有的内容

dhy1919 2004-12-29 11:24:26
BOOL Sever(char * LpText,struct User *login,char *p)
{
SQLINTEGER PassLength;
SQLHANDLE hStmt;
SQLRETURN RC;
char * Temp;
char Attribute[50];
char *SQLStatement="select Name from Menu where CMenuID=?";

LpText+=6;
Temp=LpText;
while(*Temp)
{
if(*Temp=='#')
*Temp='\0';
Temp++;
}
strcpy(login->Subject,LpText);
LpText+=(strlen(LpText)+1);
strcpy(login->Name,LpText);
LpText+=(strlen(LpText)+1);
strcpy(login->PassWord,LpText);


RC=SQLAllocHandle(SQL_HANDLE_STMT, hConn, &hStmt);
if (RC==SQL_SUCCESS || RC==SQL_SUCCESS_WITH_INFO)
{
SQLBindParameter(hStmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,50,0,login->Subject,strlen(login->Subject),NULL);

SQLPrepare(hStmt,SQLStatement,strlen(SQLStatement));
RC=SQLExecute(hStmt);

if (RC==SQL_SUCCESS || RC==SQL_SUCCESS_WITH_INFO)
{
SQLBindCol(hStmt,1,SQL_C_CHAR,Attribute,strlen(Attribute),&PassLength);
if(SQLFetch(hStmt)==SQL_NO_DATA)
{
fprintf(stderr, "没有数据.\n");
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
return 0;
}
fprintf(stderr, "有数据\n");
当杳询到有多条记录的时候该怎么读出来呢????????
当杳询到有多条记录的时候该怎么读出来呢????????
请各位强人指教~谢谢

SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
strcpy(p,Attribute);
return 1;
}
else
{
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
fprintf(stderr,"\nSQL语句执行失败\n");
return 0;
}
}
else
{
fprintf(stderr,"\n语句句柄获取失败\n");
return 0;
}
}
...全文
112 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
allenq 2004-12-30
  • 打赏
  • 举报
回复
用ADO的Page功能吧
对结果集进行分页显示
phoenix_fei 2004-12-30
  • 打赏
  • 举报
回复
你返回一个记录集,然后 MoveNext遍历表
如果多个查询你还可以用 NextRecordset
oyljerry 2004-12-30
  • 打赏
  • 举报
回复
MoveNext遍历表
zhangqu_980371 2004-12-30
  • 打赏
  • 举报
回复
试试用datagrid控键显示吧。
dhy1919 2004-12-30
  • 打赏
  • 举报
回复
感谢各的指教可是我用的是ODBCAPI正如代码里所看到的~~
dhy1919 2004-12-30
  • 打赏
  • 举报
回复
RC=SQLExecute(hStmt);
Kudeet 2004-12-29
  • 打赏
  • 举报
回复
上面的代码是把Employee表的所有记录显示列表控件m_employeelist里.
Kudeet 2004-12-29
  • 打赏
  • 举报
回复
m_employeelist.DeleteAllItems();
CString sql,temp;
_variant_t vtemp;
_RecordsetPtr m_set;
m_set.CreateInstance("ADODB.Recordset");
m_set->CursorLocation = adUseClient;
sql.Format("select * from [Employee]");
try
{
m_set->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pconn,true),adOpenStatic,adLockOptimistic,adCmdText);
if(m_set->GetRecordCount()!=0)
m_set->MoveFirst();
int i=0;
while(!m_set->EndOfFile)
{
m_employeelist.InsertItem(i,"");

vtemp = m_set->GetCollect(_variant_t((long)0));//0表示第一个字段
temp=(LPCTSTR)(_bstr_t)vtemp;
temp.TrimRight();
m_employeelist.SetItemText(i,0,temp);

vtemp = m_set->GetCollect(_variant_t((long)1));
temp=(LPCTSTR)(_bstr_t)vtemp;
m_employeelist.SetItemText(i,1,temp);

vtemp = m_set->GetCollect(_variant_t((long)2));
temp=(LPCTSTR)(_bstr_t)vtemp;
m_employeelist.SetItemText(i,2,temp);

vtemp = m_set->GetCollect(_variant_t((long)3));
temp=(LPCTSTR)(_bstr_t)vtemp;
m_employeelist.SetItemText(i,3,temp);

vtemp = m_set->GetCollect(_variant_t((long)4));
temp = (LPCTSTR)(_bstr_t)vtemp;
int n=temp.Find(' ');
temp = temp.Left(n);
m_employeelist.SetItemText(i,4,temp);
i++;
m_set->MoveNext();
}
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
m_set->Close();
m_set=NULL;
gooyan 2004-12-29
  • 打赏
  • 举报
回复

ADO取纪录字段值方式之一
_variant_t TheValue; //VARIANT数据类型
TheValue = m_pRecordset->GetCollect("BIG_NAME");//得到字段BIG_NAME的值
if(TheValue.vt!=VT_NULL)
m_List.AddString((char*)_bstr_t(TheValue));
//将该值加入到列表控件中

//取纪录字段值方式之二
_bstr_t TheValue1=m_pRecordset->Fields->GetItem("BIG_NAME")->Value;
CString temp=TheValue1.copy();
m_List.AddString(temp);


_variant_t _vValue;
_vValue=pSaveRs->GetCollect("mkbm");
if(_vValue.vt!=VT_NULL)
{
vValue.ChangeType(VT_BSTR);
mkbm=_vValue.bstrVal;
}

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧