Builder & ODBC
От: dyrnik  
Дата: 10.03.08 09:20
Оценка:
Работаю с ODBC на C++ Builder 6. (создаю файл .mdb, создаю в нем таблицу, записываю данные)
Выдает следующие ошибки:

[Linker Error] Unresolved external 'SQLSetEnvAttr' referenced from D:\UNIT1.OBJ
[Linker Error] Unresolved external 'SQLAllocHandle' referenced from D:\UNIT1.OBJ
[Linker Error] Unresolved external 'SQLFreeHandle' referenced from D:\UNIT1.OBJ


На форумах, по этому делу, шарил. У меня к проекту, как надо, подключены odbc32.lib и odbccp32.lib видимо в них дело...

Может скачать библиотеки для Билдера или скачать Билдер? Или в чем-то другом ошибка?
Re: Builder & ODBC
От: trophim Россия  
Дата: 11.03.08 19:30
Оценка:
Здравствуйте, dyrnik, Вы писали:

D>Работаю с ODBC на C++ Builder 6. (создаю файл .mdb, создаю в нем таблицу, записываю данные)

D>Выдает следующие ошибки:

D>
D>[Linker Error] Unresolved external 'SQLSetEnvAttr' referenced from D:\UNIT1.OBJ
D>[Linker Error] Unresolved external 'SQLAllocHandle' referenced from D:\UNIT1.OBJ
D>[Linker Error] Unresolved external 'SQLFreeHandle' referenced from D:\UNIT1.OBJ
D>


D>На форумах, по этому делу, шарил. У меня к проекту, как надо, подключены odbc32.lib и odbccp32.lib видимо в них дело...


D>Может скачать библиотеки для Билдера или скачать Билдер? Или в чем-то другом ошибка?


Включаю телепатический режим.... ERROR. Чо-та не работает...

Исходники покажи.
[EOF]
Let it be! — Давайте есть пчелу!
Re[2]: Builder & ODBC
От: Аноним  
Дата: 12.03.08 02:22
Оценка:
Здравствуйте, trophim, Вы писали:

T>Включаю телепатический режим.... ERROR. Чо-та не работает...


T>Исходники покажи.



//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"

#define WIN32
#include <sql.h>
#include <odbcinst.h>
#include <sysutils.hpp>

#include <sqlext.h>
#include <stdio.h>

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma   comment(lib,"odbccp32.lib")   
#pragma   comment(lib,"odbc32.lib")
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
    SQLHENV henv;
    SQLHDBC hdbc;
    SQLHSTMT hstmt;
    SQLRETURN nstatus;
    SQLCHAR szConnect[1024];
    SQLSMALLINT cbConnString;

    
    //****creat file .mdb
    SQLConfigDataSource(
            NULL, ODBC_ADD_DSN,
            "Microsoft Access Driver (*.mdb)",
            "CREATE_DB=d:\\folks.mdb");
        
    //****creat headle
    nstatus = SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv);
    nstatus = SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER) SQL_OV_ODBC3,0);
    nstatus = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
    nstatus = SQLDriverConnect(hdbc,NULL,
        (SQLCHAR*) "Driver={Microsoft Access Driver (*.mdb)};DBQ=d:\\folks.mdb", 
        SQL_NTS, szConnect, 1024, &cbConnString, SQL_DRIVER_NOPROMPT);
        
    if (nstatus != SQL_SUCCESS && nstatus != SQL_SUCCESS_WITH_INFO)
    {
        return;
    }

    nstatus = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);

    //--------------------------------------------------------------------------------------------
    //****creat table
    nstatus = SQLExecDirect(hstmt,(SQLCHAR*) "CREATE TABLE DateTable (dateval CHAR)",SQL_NTS);
    if (nstatus != SQL_SUCCESS && nstatus != SQL_SUCCESS_WITH_INFO)
    {
        return;
    }

    //****input data in table
    nstatus = SQLExecDirect(hstmt, (SQLCHAR*) "INSERT INTO DateTable VALUES (111)",SQL_NTS);
    if (nstatus != SQL_SUCCESS && nstatus != SQL_SUCCESS_WITH_INFO)
    {
            return;
    }
    nstatus = SQLExecDirect(hstmt, (SQLCHAR*) "INSERT INTO DateTable VALUES (222)",SQL_NTS);
    if (nstatus != SQL_SUCCESS && nstatus != SQL_SUCCESS_WITH_INFO)
    {
            return;
    }
        //--------------------------------------------------------------------------------------------
    //****disconect
        nstatus = SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
    nstatus = SQLDisconnect(hdbc);
    nstatus = SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
    nstatus = SQLFreeHandle(SQL_HANDLE_ENV,henv);
    printf("Done");
}
//---------------------------------------------------------------------------
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.