sourcecode

C++를 사용하여 내 SQL 데이터베이스를 연결하는 방법

codebag 2023. 10. 15. 17:18
반응형

C++를 사용하여 내 SQL 데이터베이스를 연결하는 방법

웹사이트에서 데이터베이스를 연결하고 C++를 사용하여 몇 개의 행을 표시하려고 합니다.그래서 간단하게 사이트 데이터베이스의 테이블에서 선택 쿼리를 수행하는 응용 프로그램을 만들려고 합니다.이것은 수많은 애플리케이션이 이를 실행하는 것을 보았기 때문에 가능할 것입니다.

이거 어떻게 해요?누가 예를 들어 어떤 라이브러리를 사용해야 하는지 알려줄 수 있습니까?

여기서 찾을 수 있습니다.

/* Standard C++ includes */
#include <stdlib.h>
#include <iostream>

/*
  Include directly the different
  headers from cppconn/ and mysql_driver.h + mysql_util.h
  (and mysql_connection.h). This will reduce your build time!
*/
#include "mysql_connection.h"

#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>

using namespace std;

int main(void)
{
cout << endl;
cout << "Running 'SELECT 'Hello World!' »
   AS _message'..." << endl;

try {
  sql::Driver *driver;
  sql::Connection *con;
  sql::Statement *stmt;
  sql::ResultSet *res;

  /* Create a connection */
  driver = get_driver_instance();
  con = driver->connect("tcp://127.0.0.1:3306", "root", "root");
  /* Connect to the MySQL test database */
  con->setSchema("test");

  stmt = con->createStatement();
  res = stmt->executeQuery("SELECT 'Hello World!' AS _message"); // replace with your statement
  while (res->next()) {
    cout << "\t... MySQL replies: ";
    /* Access column data by alias or column name */
    cout << res->getString("_message") << endl;
    cout << "\t... MySQL says it again: ";
    /* Access column fata by numeric offset, 1 is the first column */
    cout << res->getString(1) << endl;
  }
  delete res;
  delete stmt;
  delete con;

} catch (sql::SQLException &e) {
  cout << "# ERR: SQLException in " << __FILE__;
  cout << "(" << __FUNCTION__ << ") on line " »
     << __LINE__ << endl;
  cout << "# ERR: " << e.what();
  cout << " (MySQL error code: " << e.getErrorCode();
  cout << ", SQLState: " << e.getSQLState() << " )" << endl;
}

cout << endl;

return EXIT_SUCCESS;
}

마침내 Ubuntu 12.04에서 C++ 커넥터로 프로그램을 성공적으로 컴파일 할 수 있었습니다. 이 명령을 사용하여 커넥터를 설치했습니다.

'apt-get install libmysqlcppconn-dev'

처음에 저는 이 문제를 해결하기 위해 "'get_driver_instance'에 대한 정의되지 않은 참조"와 같은 문제에 직면했습니다. MySQL_Driver 유형의 드라이버 인스턴스 변수를 선언합니다.이 유형은 mysql_driver.h 파일에 정의되어 있습니다.여기 제 프로그램에서 사용한 코드 조각이 있습니다.

sql::mysql::MySQL_Driver *driver;
try {     
    driver = sql::mysql::get_driver_instance();
}

그리고 나는 -l mysqlcppconn linker 옵션으로 프로그램을 컴파일했습니다.

그리고 이 머리글을 포함하는 것을 잊지 마세요.

#include "mysql_driver.h" 

네, mysql c++ connector 라이브러리가 필요합니다.아래를 읽어보세요. 여기서 mysql developers가 제공한 예제를 작동시키는 방법을 설명합니다.

참고(및 솔루션): IDE: Visual Studio 2010을 사용해 보았지만 몇 초 전에 이 모든 것이 작동했습니다. 매뉴얼에서 놓친 것 같지만 Visual Studio 2008을 사용할 것을 제안합니다.VS2008 Express for c++를 다운로드하여 설치했는데 수동 5장의 절차에 따라 오류가 사라졌습니다!그건 효과가 있다.행복해요, 문제가 해결됐어요.새로운 버전의 비주얼 스튜디오에서 작동시키는 방법에 대한 것은 제외하고요.성공적으로 연결하려면 vs2010 이상을 얻을 수 있는 비주얼 스튜디오 addon에 대해 mysql을 시도해야 합니다.mysql 웹사이트에서 다운받을 수 있습니다.

위에 언급한 예제를 작동시키기 위해 노력하는 동안, 나는 mysql dev 웹사이트의 변경으로 인해 어려움을 겪고 있습니다.아직 코멘트를 드릴 수 없기 때문에 답변으로 작성한 점에 대해 사과드리며, 향후 개발자들이 도움을 받을 수 있도록 조치 및 해결책을 찾을 때 이 내용을 편집하겠습니다.(이게 너무 커져서 어차피 댓글로 안맞았을거야 하하)

@hd1 "예" 링크가 더 이상 작동하지 않습니다.링크를 따라가면 메인 메뉴얼로 연결되는 페이지가 끝납니다.메인 매뉴얼은 좋은 참고 자료이지만 꽤 오래되고 구식인 것 같고, 특히 특정 파일을 누락하고 무엇을 추가해야 하는지 경험이 없기 때문에 신규 개발자에게는 어려운 것 같습니다.

@hd1의 링크가 이동하여 url 구성 요소를 제거하고 기사 이름만 유지하면 빠른 검색으로 찾을 수 있습니다. 어쨌든 여기 있습니다. http://dev.mysql.com/doc/connector-cpp/en/connector-cpp-examples-complete-example-1.html

7.5 MySQL Connector/C++ 완전한 예제 1 작동하기

다운로드 수:

-mysql c++ 커넥터를 가져와, 크기는 커도 zip이 아닌 설치 패키지를 선택합니다.

-boost는 connection.h와 mysql_connection.h에서 사용되므로 mysql c++ 커넥터에서 boost 라이브러리를 가져옵니다.

이제 진행합니다.

-c 드라이브에 커넥터를 설치한 다음 mysql 서버 install folder/lib로 이동하여 모든 libmysql 파일을 복사한 후 커넥터 install folder/lib/opt에 붙여넣기

-boost library(부스트 라이브러리)를 c 드라이브에 압축 해제합니다.

다음:

예제에서 코드를 그대로 복사해도 괜찮습니다(위 링크, 당연히 새로운 c++ 프로젝트로 연결).오류가 발생합니다.

-첫번째 : 변경

cout << "(" << __FUNCTION__ << ") on line " »
 << __LINE__ << endl;

로.

cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl;

그 작은 이중 화살표가 무슨 용도인지는 모르겠지만, 나는 그것이 c++의 일부라고 생각하지 않습니다.

-두번째:sql 매뉴얼의 5장을 읽음으로써 그것들의 다른 오류들을 수정하고, 아래 5장에 대한 나의 문단을 참고하세요.

[주 1]: 5장 Microsoft Visual StudioMySQL Connector/C++ Windows 응용 프로그램 구축 이 장을 따라가면 최신 c++ 커넥터를 사용하여 커넥터 폴더에 있는 것과 이미지에 표시된 것이 상당히 다르다는 것을 알 수 있을 것입니다.mysql server 설치 include and lib folders 또는 mysql c++ connector folders' include and lib folders를 살펴보든 매뉴얼을 업데이트하지 않는 한 완벽하게 일치하지 않을 것입니다. 또는 마법 다운로드를 받은 적이 있지만 저는 2014년 3월에 시작된 커넥터 다운로드와 일치하지 않습니다.

5장만 따라가면 됩니다

-그러나 c/c++의 경우 서버 설치 폴더가 아닌 설치한 커넥터에서 "include" 폴더를 추가로 포함합니다.

-상기 작업을 수행하면서 부스트 폴더도 포함합니다(아래 참고 2 참조).

-링커를 위해서는 장군님..connector/lib/opt의 opt 폴더를 사용합니다.

*[주 2]*두 번째 포함은 boost library variant.hpp를 포함해야 합니다. 위와 동일하게 수행되며, boost 또는 lib가 아닌 boost zip 다운로드에서 추출한 메인 폴더 또는 boost 메인 폴더/boost에 있는 하위 폴더 "variant"를 추가합니다.두번째로 메인폴더만 포함됩니다.

다음:

다음은 정적 빌드라고 생각합니다. 어쨌든 제가 한 일입니다.따라오세요.

그런 다음 빌드/컴파일합니다.LNK 오류가 나타납니다(편집: ide를 비주얼 스튜디오 2008로 변경 후 사라짐).제가 직접 커넥터를 구축해야 하기 때문이라고 생각합니다(비주얼 스튜디오 2010에서 이 작업을 수행하면 링크 오류가 사라집니다). 하지만 목요일부터 이 작업을 수행하기 위해 노력하고 있으며, 숙면 후에 이 작업을 완료할 동기가 있는지 확인할 것입니다(그리고 수행하고 지금 완료했습니다 :).

작동시키기 위해 빌드에 -lmysqlcppcon을 포함시켜야 했습니다.

언급URL : https://stackoverflow.com/questions/16424828/how-to-connect-mysql-database-using-c

반응형