问题1:我不通过DSN连接SQL Server数据库为何老连不上啊??通过数据源一下就连上了??问题2:请教高手,我通过下面的方法把文件中的数据导入数据库中为何速度特别慢,有什么更好的方法吗???请多指教;多谢
说明:文件里有10万组数据的时候,也就是要向数据库添加10万条记录的时候大概花了几十分钟时间的问题3:id字段设为列值自动增加的时候,当表删空记录后,为何不重0开始计数呀,(这里我是自己给id字段计数的)代码如下:void CSimulatorView::OnImportData() 
{
// TODO: Add your command handler code here
float edit[10];
FILE* pFile;
int id
         _variant_t vid
HRESULT hr; try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象
if(SUCCEEDED(hr))
{
hr = m_pConnection->Open("Data source=test;UID=;PWD=;","","",adModeUnknown);//连接数据库
//hr = m_pConnection->Open("driver={SQL Server};Server=COLIN\COLINSERVER;DATABASE=test;UID=sa;PWD=sa","","",adModeUnknown);
//说明:这样就连不上,COLIN\COLINSERVER是我建的服务器名,改用ip也试过了还是连不上,上面用数据源连接是可以的。 }
}
catch(_com_error e)//捕捉异常
{
CString errormessage;
errormessage.Format("数据库连接失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);//显示错误信息 }
m_pRecordset.CreateInstance("ADODB.Recordset");//创建Recordset对象的实例    
m_pRecordset->Open("SELECT * FROM test ORDER BY id DESC",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
if(!m_pRecordset->adoEOF)
{
vid = m_pRecordset->GetCollect("id");
id = long(vid);

}
else
id = 0;
CString strtemp = _T("E:\\Data\\");
if((pFile = fopen(strtemp+_T("All.")+g_cFileSerial, "r")) == NULL)
{
AfxMessageBox("文件打开失败");
return ;
}
while(!feof(pFile))
{ fscanf(pFile,"%f %f %f %f %f %f %f %f %f %f",&edit[0],&edit[1],&edit[2],&edit[3],&edit[4],&edit[5],&edit[6],&edit[7],&edit[8],&edit[9]);

m_pRecordset->AddNew();//添加新记录 m_pRecordset->PutCollect("id",_variant_t(long(id+1)));
m_pRecordset->PutCollect("a",_variant_t(edit[0]));
m_pRecordset->PutCollect("b",_variant_t(edit[1]));
m_pRecordset->PutCollect("c",_variant_t(edit[2]));
m_pRecordset->PutCollect("d",_variant_t(edit[3]));
m_pRecordset->PutCollect("e",_variant_t(edit[4]));
m_pRecordset->PutCollect("f",_variant_t(edit[5]));
m_pRecordset->PutCollect("g",_variant_t(edit[6]));
m_pRecordset->PutCollect("h",_variant_t(edit[7]));
m_pRecordset->PutCollect("i",_variant_t(edit[8]));
m_pRecordset->PutCollect("j",_variant_t(edit[9]));
m_pRecordset->Update(); id=id+1;

}
    fclose(pFile);  
    m_pRecordset->Close();
    m_pConnection->Close();//关闭连接
    AfxMessageBox("导入数据成功");
}

解决方案 »

  1.   

    如果你用的Win98,必须用Mdac 2.5版本以上,ADO才能正常使用
      

  2.   

    CString strConn = _T("Driver = SQL Server;Server = ip地址(或者服务器名);Databse=test;UID=;PWD=;");
    hr = m_pConnection->Open((_bstr_t)strConn,_T(""),_T(""),adModeUnknown);
      

  3.   

    to bohut:试过 还是不行啊,会是什么原因呢???还有导入数据库是cpu占用率高达45%左右 是不是算法上有问题啊 请高手指教