Spec-Zone .ru
спецификации, руководства, описания, API

22.4.6.6. MySQL Connector/C++ Complete Example 2

The following code shows a complete example of how to use MySQL Connector/C++:

/* Copyright 2008, 2010, Oracle and/or its affiliates. All rights reserved.This program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; version 2 of the License.There are special exceptions to the terms and conditions of the GPLas it is applied to this software. View the full text of theexception in file EXCEPTIONS-CONNECTOR-C++ in the directory of thissoftware distribution.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA*//* 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>#include <cppconn/prepared_statement.h>using namespace std;int main(void){cout << endl;cout << "Let's have MySQL count from 10 to 1..." << endl;try {  sql::Driver *driver;  sql::Connection *con;  sql::Statement *stmt;  sql::ResultSet *res;  sql::PreparedStatement *pstmt;  /* 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();  stmt->execute("DROP TABLE IF EXISTS test");  stmt->execute("CREATE TABLE test(id INT)");  delete stmt;  /* '?' is the supported placeholder syntax */  pstmt = con->prepareStatement("INSERT INTO test(id) VALUES (?)");  for (int i = 1; i <= 10; i++) {    pstmt->setInt(1, i);    pstmt->executeUpdate();  }  delete pstmt;  /* Select in ascending order */  pstmt = con->prepareStatement("SELECT id FROM test ORDER BY id ASC");  res = pstmt->executeQuery();  /* Fetch in reverse = descending order! */  res->afterLast();  while (res->previous())    cout << "\t... MySQL counts: " << res->getInt("id") << endl;  delete res;  delete pstmt;  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;}