接口已经给了
存储过程名字: basec2c.GetUserInfo
输入: in_acc_nbr varchar2
输出: username varchar2
address varchar2
用户: user
密码 pass
服务器:IP 192.168.1.1 1521
本机IP 192.168.1.19
网关: 192.168.1.254
存储过程名字: basec2c.GetUserInfo
输入: in_acc_nbr varchar2
输出: username varchar2
address varchar2
用户: user
密码 pass
服务器:IP 192.168.1.1 1521
本机IP 192.168.1.19
网关: 192.168.1.254
解决方案 »
- 求
- 学win32 SDK的学习方法上的问题!!纯属灌水送分题
- 求教new CChildFrame 的delete销毁问题
- VC没有成员函数提示,是怎么搞的?谢谢
- 屏幕保护程序怎么DEBUG
- 谁给个Microsoft Visual C++6.0的下载地址啊,谢谢(急)
- 怎样注销COM 的进程? 在线等! 解决就给分!
- 请详细解释一下组件和控件的区别?
- 决不惜分,UP有分,如何在ATL里实现系统托盘,真正的挑战哦!.....................................
- MFC的FTP文件操作类封装的怎么样?用它好还是用FTP的API好?哪个功能更强?
- 誰有數據庫系統的框架,其中只需一個畫面即可,我想學學大家是如何開發數據庫程序的.
- 98下用过“界面专家”的进
[email protected]
忙着一个BS的系统,要交差了,还差好多又要考试。。
怎么用VC来调用存储过程??
{
m_pConnection.CreateInstance(__uuidof(Connection));
CString conn;
conn.Format("driver={SQL Server};Server=***;UID=***;PWD=***;DATABASE=***");
m_pConnection->Open(_bstr_t(conn),"","",adModeUnknown); _RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
CString sql;
sql.Format("select * from chat_room");
m_pRecordset->Open(_variant_t(sql),(IDispatch *)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
while( !m_pRecordset->adoEOF )
{
_variant_t roomid = m_pRecordset->GetCollect("id");
_variant_t roomname = m_pRecordset->GetCollect("roomname");
CString tmp;
tmp.Format("%d.%s",roomid.iVal,(char *)(_bstr_t)roomname);
m_room.AddString(tmp);
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
_variant_t RecordsAffected;
sql.Format("exec chat '%s','me','%s','%s',1",phone,m_msgBody,srcphone,province);
m_pConnection->Execute( _bstr_t(sql), &RecordsAffected,adCmdUnknown);
}
catch(_com_error e)
{
MessageBox("数据库连接失败");
exit(0);
}
declare @user varchar2,@addr varchar2
exec basec2c.GetUserInfo 'in_acc_nbr',@username = @user output,@address = @addr output
select @user as user,@addr as addr然后就跟结果集一样取user和addr字段就可以了。Oracle数据库以上语句可能要改一下。
=======
你怎么每次都在我前面啊,我抢不过你啊!
一般都是用CDatabase和CRecordset的方法。
那位高人能说说?
declare @user varchar(50),@addr varchar(50)
execute P_STDX_119_GetUserInfo '2807998',@username = @user output,@address = @addr output
select @user as username,@addr as addr这是为什么?
CDatabase m_db;
m_db.Open("LocalServer",FALSE,FALSE,"ODBC;DSN=server;UID=sa;PWD=sa",TRUE);
CRecordset ResultSet(&m_db);
try
{
ResultSet.Open(CRecordset::forwardOnly,
_T("declare @user varchar(50),@addr varchar(50) execute P_STDX_119_GetUserInfo '2807998',@username = @user output,@address = @addr output select @user as username,@addr as addr"));
}
catch(CDBException* e)
{
AfxMessageBox("读取结果错误!" + e->m_strError);
return;
} while(!ResultSet.IsEOF())
{
CString strUser="",strAddr="";
int nReceived=0;
ResultSet.GetFieldValue("username",strUser);
ResultSet.GetFieldValue("addr",strAddr);
ResultSet.MoveNext();
}
ResultSet.Close();
m_db.Close( );
ResultSet.GetFieldValue(0,strUser);
ResultSet.GetFieldValue(1,strAddr);
throw( CDBException, CMemoryException );关于参数lpszSQL:A string pointer containing one of the following: A NULL pointer.
The name of a table.
An SQL SELECT statement (optionally with an SQL WHERE or ORDER BY clause).
A CALL statement specifying the name of a predefined query (stored procedure). Be careful that you do not insert whitespace between the curly brace and the CALL keyword.
For more information about this string, see the table and the discussion of ClassWizard’s role under Res.Note The order of the columns in your result set must match the order of the RFX or Bulk RFX function calls in your DoFieldExchange or DoBulkFieldExchange function override.看来ResultSet.Open不支持这些SQL语句。ADO是可以的。
呵呵!不是抢啊!我只是泡在里面的时间多点而已!