调用DLL时出错,是什么原因呢。附代码
这是有asp.net的代码,我调用VC写的DLL,出现调用外部组件出错的现象,当我输入的密码正确时就出现错误,当用户名不正确或者密码不正确时,就不会出现这个错误了。请问是什么原因呢。
int i=0;
i=CheckLogin(User.Text,PassWord.Text );
if(-2==i)
{
this.Label3.Text ="发生来未知错误";
}
else if(-1==i)
{
this.Label3.Text ="用户帐号不存在";
}
else if(0==i)
{
this.Label3.Text ="用户密码不正确";
}
else if(1==i)
{
this.Label3.Text ="用户密码正确";
}
下面是在VC写的DLL代码
int CCheckLogin::CheckLogin(CString UserID,CString PassWord)
{
if (UserID=="")
{
return -1;
}
if(PassWord.GetLength()!=8)
{
return 0;
}
::CoInitialize(NULL);
HRESULT hr;
int i = 0;
_bstr_t ConnectionString="Provider=SQLOLEDB;SERVER=localhost;DATABASE=abc;UID=sa;PWD=1";//数据库连接串
_bstr_t _user="sa";
_bstr_t _password="1";
_ConnectionPtr pconn;
_RecordsetPtr prs;
_CommandPtr pcmd;
hr = pconn.CreateInstance(__uuidof(Connection));
_bstr_t txtSQL ;
CString tempPass;
pconn->Open(ConnectionString,_user,_password,0);
hr = prs.CreateInstance(__uuidof(Recordset));
prs->putref_ActiveConnection(pconn);
//prs->put_CacheSize(5000);
//prs->PutLockType(adLockReadOnly);
//prs->PutCursorType(adOpenStatic);
//prs->CursorLocation = adUseClient;
pcmd.CreateInstance(__uuidof(Command));
pcmd->putref_ActiveConnection(pconn);
pcmd->put_CommandType(adCmdText);
txtSQL=_bstr_t("select * from t_user where Fuserid='" + (_bstr_t)UserID + "'");
pcmd->put_CommandText(txtSQL);
prs->Open((IDispatch *) pcmd,vtMissing,adOpenForwardOnly,adLockReadOnly,adCmdText);
if (prs->adoEOF)
{
prs->Close();
pconn->Close();
return -1;
}
else
{
tempPass=prs->GetCollect("FPass");
}
if(tempPass!=PassWord)
{
return 0;
}
txtSQL="insert into t_LoginMessage(FUserID,FDate,Fzt) values('" + (_bstr_t)UserID + "',getdate(),1)";
pconn->BeginTrans();
try
{
pconn->Execute(txtSQL,NULL,1);
pconn->CommitTrans();
}
catch(_com_error er)
{
pconn->RollbackTrans();
return -2;
}
prs->Close();
pconn->Close();
return 1;
}
问题点数:100、回复次数:5Top
1 楼huleeyar(虚拟过客)回复于 2004-12-03 00:25:36 得分 20
包装成comTop
2 楼cxyPioneer(matt)回复于 2004-12-03 08:36:43 得分 20
upTop
3 楼dragonforfly(飘零)回复于 2004-12-03 08:47:00 得分 20
封装Top
4 楼51106354(大头)回复于 2004-12-03 09:07:26 得分 40
不可以这样显示调用,需要对DLL进行封装Top
5 楼mybcb(bcb)回复于 2004-12-03 09:20:31 得分 0
我已经封装成DLL了啊。在.net中是可以调用 的,当用户名和密码都正确时才会出错,当用户名不正确,或者密码不正确时,调用是正常的啊。Top




