sw2007/02/13 11:29

CDatabase database;
CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)";
CString sExcelFile = "d:\\demo.xls";
CString sSql;

TRY
{
sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",
              sDriver, sExcelFile, sExcelFile);
if(database.OpenEx(sSql, CDatabase::noOdbcDialog) )
{
 sSql = "CREATE TABLE demo (Name TEXT, Age NUMBER)";
 database.ExecuteSQL(sSql);

 sSql = "INSERT INTO demo (Name,Age) VALUES ('Bruno Brutalinsky',45)";
 database.ExecuteSQL(sSql);

 sSql = "INSERT INTO demo (Name,Age) VALUES ('Fritz Pappenheimer',30)";
  database.ExecuteSQL(sSql);

 sSql = "INSERT INTO demo (Name,Age) VALUES ('Hella Wahnsinn',28)";
 database.ExecuteSQL(sSql);
}

database.Close();
}
CATCH_ALL(e)
{
TRACE1("Driver not installed: %s",sDriver);
}
END_CATCH_ALL;


그리고 읽어오기
읽어오기는 조금 바꿔봤다..쿼리 조건에 "데모"쉬트의 "이름 정의"필드가 비어있지 않은것을 불러온다.
CDatabase database;
CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)";
CString sExcelFile = "d:\\demo.xls";
CString sSql;

TRY
{
sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",
             sDriver, sExcelFile, sExcelFile);

if(database.OpenEx(sSql, CDatabase::noOdbcDialog) )
{
 sSql = "SELECT * FROM 데모 WHERE \"이름 정의\" <> NULL";
 CRecordset rs(&database);
 rs.Open(CRecordset::forwardOnly,sSql,CRecordset::readOnly);
 CString sItem1, sItem2;

 while( !rs.IsEOF() )
 {
  rs.GetFieldValue((short)0, sItem1);
  rs.GetFieldValue((short)1, sItem2);

  CString strMsg;
  strMsg.Format("Name : %s, Age : %s", sItem1, sItem2);
  MessageBox(strMsg);

  rs.MoveNext();

 }
}

database.Close();
}
CATCH_ALL(e)
{
TCHAR szCauses[255];
CString strErrorMsg;
e->GetErrorMessage(szCauses, 255);
strErrorMsg = "Msg: ";
strErrorMsg += szCauses;
MessageBox(strErrorMsg);
}
END_CATCH_ALL;


Posted by redef
TAG , ,

댓글을 달아 주세요