|
AppBuilder中进行直接ODBC API数据库调用访问的基本方法!(4) return SQLConfigDataSource(NULL,ODBC_ADD_DSN,strDriver,szAttr); } 2、 删除数据源 void SuperDatabase::RemoveDSN(CString strDSN) { char szDSN[255]; sprintf(szDSN,"DSN=%s\0\0",strDSN); BOOL bIsSuccess = SQLConfigDataSource(NULL,ODBC_REMOVE_DSN,"Microsoft Access Driver (*.mdb)\0",szDSN); } 3、 取得系统已有得DSN SWORD nDataSourceNameLength; //DSN str length SWORD nSourceDescriptionLength; //Driver Description str length char szSourceDescription[MAXBUFLEN+1]; //Driver Description string SQLRETURN nResult; //Return Code SWORD nDirection=SQL_FETCH_FIRST; if ((nResult = SQLDataSources(m_henv, nDirection, (UCHAR *)((LPCTSTR)strDataSourceName), MAXBUFLEN, &nDataSourceNameLength, (UCHAR *)szSourceDescription, MAXBUFLEN, &nSourceDescriptionLength)) != SQL_NO_DATA && nResult != SQL_ERROR) { nDirection=SQL_FETCH_NEXT; // szSourceDescription为DSN 的描述,可以在这里取来用; }
四、 针对表的操作: 1、 取得表名: void SuperDatabase::GetTable(CStringList &tableList) { ASSERT(m_bIsConnect); if (!m_bIsConnect) return; SQLHSTMT hstmt = NULL; if (SQL_SUCCESS == ::SQLAllocHandle(SQL_HANDLE_STMT, m_hdbc, &hstmt)) { if (SQL_SUCCESS == ::SQLTables(hstmt, NULL, 0, NULL, 0, NULL, 0, NULL, 0)) { SDWORD cb; char szTable[255]; char szTableType[255]; ::SQLBindCol(hstmt, 3, SQL_C_CHAR, szTable, 255, &cb); ::SQLBindCol(hstmt, 4, SQL_C_CHAR, szTableType, 255, &cb); while (SQL_SUCCESS == ::SQLFetch(hstmt)) { if (0 == strcmp(szTableType, "TABLE"))//TABLE表示表,VIEW表示查询 { tableList.AddTail(szTable); } } } } ::SQLFreeHandle(SQL_HANDLE_STMT, hstmt); hstmt = NULL; } 2、 创建表:可以用SQL语句生成表,使用的命令为:"CREATE TABLE": CREATE TABLE table (field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...]] [, CONSTRAINT multifieldindex [, ...]]) 其中,各类型type如下: 数据类型 Type参数 整型 SHORT 长整型 INTEGER 单精度 FLOAT 双精度 DOUBLE
|