VC++6.0 ODBC數據源:Exa_4DS, 數據庫(Access):Exa_4, 數據表:Exat_4; 如何將數據庫中的數據讀取出來存放入數組A(m, n)中。
8 个解决方案
_RecordsetPtr rs;
,,,,
rs->GetRows(...)
如何將VB代碼轉變成VC++6.0代碼:
Private Sub Form_Load()
Dim i%, j%, A!(), m%, n%
Dim mlink As String, mpath As String, macc As String
Dim k As Integer
Dim Cnn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
mlink = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= 系統測試.mdb"
macc = "select * from 股票系統測試表 where 代碼 = '" & d & " ' "
Cnn.Open mlink
Set Rst = New ADODB.Recordset
Rst.Open macc, Cnn, adOpenKeyset, adLockOptimistic
'2 獲得表的字段數和記錄數
Rst.MoveLast
j = Rst.RecordCount - 1
i = Rst.Fields.Count - 1
'3 利用循環賦值
ReDim A(i, j)
e = 45
For n = 0 To j
If n > 0 Then
Rst.MoveNext
If Rst.EOF Then
Rst.MoveLast
End If
Else
Rst.MoveFirst
End If
For m = 0 To i
A(m, n) = Rst.Fields(m)
Next m
Next n
Cnn.Close
這個問題 回答起來比較復雜呀.一不知道你的數據庫是什么表結構,二不知道你的數組是什么結構.如果一定要回復的話只能說:
先用記錄集把要的數據從數據庫抓到記錄集對象中,然后再對記錄集中的對象一個個取出.放在數組中.具體方法看你用什么方式訪問數據庫.
最好使用ado連接,只需要設置連接字符,可以兼容各種數據庫,網上有封裝好的類可以使用,簡單方便
如何解決下面問題。
void CExampleDlg::OnConnect()
{
// TODO: Add your control notification handler code here
m_Set=new CRecordset(&m_DB);
if(!m_DB.OpenEx(_T("DSN=StuInfo6"),0))//連接數據源
{
AfxMessageBox("打開數據源失敗!!");//報告錯誤
return;
}
if(!m_Set->IsOpen())
{
m_Set->Open(CRecordset::dynaset,_T("Select * from 表1"));//選擇數據表並打開
}
if(m_Set->IsEOF())//記錄集是否為空
{
AfxMessageBox("記錄集沒有記錄");
return;
}
m_Set->MoveFirst();//第一個記錄
int i=0;
int n;
CString A(n,3);
while(!m_Set->IsOpen())
{
m_Set->GetFieldValue((short)0,A(i,0));
m_Set->GetFieldValue((short)1,A(i,1));
m_Set->GetFieldValue((short)2,A(i,2));
i++;
m_Set->MoveNext();
}
}
錯誤:
: error C2064: term does not evaluate to a function
: error C2064: term does not evaluate to a function
: error C2064: term does not evaluate to a function