如何在VC++中执行SQL语句?
最好能给出一段代码,谢谢。 问题点数:20、回复次数:6Top
1 楼xwchena(天雨)回复于 2001-07-11 15:21:13 得分 10
CString sql="select * from userfiles";
try
{
m_pRecordset->Open(_variant_t(sql),(IDispatch*)m_pConnection,
adOpenDynamic,
adLockOptimistic,
adCmdText);
while(!m_pRecordset->EndOfFile)
{
TheValue=m_pRecordset->GetCollect("FStatus");
if(TheValue.vt!=VT_NULL)
.....
m_pRecordset->MoveNext();
}
}
catch(...)
{
}Top
2 楼lastday(黑风小妖)回复于 2001-07-11 15:24:26 得分 0
我想我表达的不准确,我的意思是我可以在VC中直接使用SQL的语句吗?如:select * from *
谢谢Top
3 楼Ashura(阿修罗)回复于 2001-07-11 15:37:54 得分 10
我昨天刚写的,看看吧,或许有用:
QueryPrimaryKey()
{
SQLHENV henv;
SQLRETURN retcode;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLCHAR szPkCol[COL_LEN];
SQLINTEGER cbPkCol;
CString strSQLQueryPK;
LPSTR pSQLQueryPK;
strSQLQueryPK = "sp_pkeys @table_name = 'test'";
pSQLQueryPK = strSQLQueryPK.GetBufferSetLength(strSQLQueryPK.GetLength());
//分配环境句柄
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
//设置环境属性
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
//分配连接句柄
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLConnect(hdbc,(SQLCHAR*) "JHMY", SQL_NTS,
(SQLCHAR*) "SA", SQL_NTS,
(SQLCHAR*) "", SQL_NTS);
//分配语句句柄
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
//执行SQL语句
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLExecDirect(hstmt,(unsigned char*)"sp_pkeys @table_name = 'test'", SQL_NTS);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLBindCol(hstmt, 4, SQL_C_CHAR, szPkCol, COL_LEN, &cbPkCol);
retcode = SQLFetch(hstmt);
AfxMessageBox((LPCTSTR)szPkCol);
}
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
}
SQLDisconnect(hdbc);
}
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
}
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}
Top
4 楼wjyasd(金子鱼)回复于 2001-07-11 15:38:10 得分 0
关注!Top
5 楼flagfly(我也不知道要去哪里)回复于 2001-07-11 15:48:57 得分 0
怎么不行?用api
char sql[100];
strcpy(sql,"select * from userfiles");
SQLExecDirect(hStmt, (SQLCHAR *)sql, SQL_NTS);
Top
6 楼Ashura(阿修罗)回复于 2001-07-11 15:55:22 得分 0
哦,忘了,头两行不用的Top




