我的数据库中用到一个AutoID,是16位的,超过了int的定义范围,但在long范围内,
但是使用ADO调用时,返回的ID是错误的,请问RecordSet如何才能正确的返回超长ID.
代码大致如下 pRs = new CADORecordset(CMonitorApp::g_pDb);
CString TempSql;
int i = -1;
CString temp;
temp="SELECT * FROM (SELECT t.onrampid,r.rampname \"ONRAMPNAME\",t.offrampid,r1.rampname \"OFFRAMPNAME\",t.toll,t.autoid FROM Tariff_a t,rampinfo r,rampinfo r1 where t.onrampid=r.rampid and t.offrampid=r1.rampid) fin WHERE fin.onrampid like '%"+m_OnID+"%' AND fin.offrampid like '%"+m_OffID+"%' AND fin.onrampname like '%"+m_OnName+"%' AND fin.offrampname like '%"+m_OffName+"%'"; if(pRs->Open(LPCTSTR("SELECT * FROM (SELECT t.onrampid,r.rampname \"ONRAMPNAME\",t.offrampid,r1.rampname \"OFFRAMPNAME\",t.toll,t.autoid FROM Tariff_a t,rampinfo r,rampinfo r1 where t.onrampid=r.rampid and t.offrampid=r1.rampid) fin WHERE fin.onrampid like '%"+m_OnID+"%' AND fin.offrampid like '%"+m_OffID+"%' AND fin.onrampname like '%"+m_OnName+"%' AND fin.offrampname like '%"+m_OffName+"%'")))
{
while(!pRs->IsEof())
{
pRs->GetFieldValue("ONRAMPID",TempSql);
m_listctrl_tariff.InsertItem(++i,(LPCTSTR)TempSql);
pRs->GetFieldValue("ONRAMPNAME",TempSql);
m_listctrl_tariff.SetItemText(i, 1, (LPCTSTR)TempSql); pRs->GetFieldValue("OFFRAMPID",TempSql);
m_listctrl_tariff.SetItemText(i, 2, (LPCTSTR)TempSql); pRs->GetFieldValue("OFFRAMPNAME",TempSql);
m_listctrl_tariff.SetItemText(i, 3, (LPCTSTR)TempSql); pRs->GetFieldValue("TOLL",TempSql);
m_listctrl_tariff.SetItemText(i, 4, (LPCTSTR)TempSql); pRs->GetFieldValue("AUTOID",TempSql);
m_listctrl_tariff.SetItemText(i, 5, (LPCTSTR)TempSql);
pRs->MoveNext();
}
pRs->Close();
}
但是使用ADO调用时,返回的ID是错误的,请问RecordSet如何才能正确的返回超长ID.
代码大致如下 pRs = new CADORecordset(CMonitorApp::g_pDb);
CString TempSql;
int i = -1;
CString temp;
temp="SELECT * FROM (SELECT t.onrampid,r.rampname \"ONRAMPNAME\",t.offrampid,r1.rampname \"OFFRAMPNAME\",t.toll,t.autoid FROM Tariff_a t,rampinfo r,rampinfo r1 where t.onrampid=r.rampid and t.offrampid=r1.rampid) fin WHERE fin.onrampid like '%"+m_OnID+"%' AND fin.offrampid like '%"+m_OffID+"%' AND fin.onrampname like '%"+m_OnName+"%' AND fin.offrampname like '%"+m_OffName+"%'"; if(pRs->Open(LPCTSTR("SELECT * FROM (SELECT t.onrampid,r.rampname \"ONRAMPNAME\",t.offrampid,r1.rampname \"OFFRAMPNAME\",t.toll,t.autoid FROM Tariff_a t,rampinfo r,rampinfo r1 where t.onrampid=r.rampid and t.offrampid=r1.rampid) fin WHERE fin.onrampid like '%"+m_OnID+"%' AND fin.offrampid like '%"+m_OffID+"%' AND fin.onrampname like '%"+m_OnName+"%' AND fin.offrampname like '%"+m_OffName+"%'")))
{
while(!pRs->IsEof())
{
pRs->GetFieldValue("ONRAMPID",TempSql);
m_listctrl_tariff.InsertItem(++i,(LPCTSTR)TempSql);
pRs->GetFieldValue("ONRAMPNAME",TempSql);
m_listctrl_tariff.SetItemText(i, 1, (LPCTSTR)TempSql); pRs->GetFieldValue("OFFRAMPID",TempSql);
m_listctrl_tariff.SetItemText(i, 2, (LPCTSTR)TempSql); pRs->GetFieldValue("OFFRAMPNAME",TempSql);
m_listctrl_tariff.SetItemText(i, 3, (LPCTSTR)TempSql); pRs->GetFieldValue("TOLL",TempSql);
m_listctrl_tariff.SetItemText(i, 4, (LPCTSTR)TempSql); pRs->GetFieldValue("AUTOID",TempSql);
m_listctrl_tariff.SetItemText(i, 5, (LPCTSTR)TempSql);
pRs->MoveNext();
}
pRs->Close();
}
解决方案 »
- CListBox的右键点击问题
- 在UltraEdit中,可以直接编译程序吗?
- 用VC怎么控制Flash的行为?
- 用directshow开发C++程序要安装哪些东西?
- 各位大俠幫忙看看阿!!!
- 主程序是用delphi做的,dll是用vc做的,在dll里面一个带有循环操作的函数如何更新主程序界面?
- 几个菜鸟问题,求助
- VC6.0exe 防止反編譯 模糊化程式
- 清除 DrawText已经输出文字,在相同位置输出新文字
- 请问,SendMessage(WM_QUIT)时,为什么有内存泄漏阿?用DestroyWindow()就没事?!
- 看com 技术内幕的疑问,请达人指点!谢谢!
- VC调用VB编写的Dll中的函数遇到的问题, 请高手帮忙,
改为:GetCollect数字:rs->GetCollect("id").intVal;
BYTE:rs->GetCollect("id").bVal;
文本/备注/时间:(char*)(_bstr_t)(rs->GetCollect("user")