#include #include #include "mysql_connection.h" #include #include #include #include #include #include #include #include using namespace std; vector v; // вказівки SQL, зчитані з файлу string change(unsigned int n, string t) { string s = t; if (t.size()<=n) {for (unsigned int j=t.size(); j= t.size())) && (!fi.eof())); v.push_back(s); } fi.close(); } int main(void) { try { sql::Driver *driver; sql::Connection *con; sql::Statement *stmt; sql::ResultSet *res; sql::ResultSet *rt; sql::PreparedStatement *pstmt; sql::PreparedStatement *pstmt2; unsigned int k; // Сполучення з сервером driver = get_driver_instance(); con = driver->connect("tcp://127.0.0.1:3306", // 127.0.0.1 - адреса сервера // 3306 — номер порту; "root", // обліковий запис користувача "!@#123Qwe" // пароль ); stmt = con->createStatement(); stmt->execute("SET collation_connection = 'utf8_unicode_ci';"); // stmt->execute("DROP DATABASE school;"); // прибрати коментар при наявності БД school stmt->execute("CREATE DATABASE school;"); stmt->execute("ALTER DATABASE school CHARACTER SET utf8 COLLATE utf8_unicode_ci;"); stmt->execute("USE school;"); set_v("structure.sql"); for (k=0; kexecute(v[k]); set_v("data.sql"); for (k=0; kexecute(v[k]); delete stmt; cout << "Бази даних" << endl; pstmt = con->prepareStatement("SHOW DATABASES;"); res = pstmt->executeQuery(); while (res->next()) cout << (res->getString(1)) << endl; delete res; cout << "\nТаблиці бази даних school" << endl; pstmt = con->prepareStatement("SHOW TABLES;"); res = pstmt->executeQuery(); while (res->next()) { string t = res->getString(1); cout << "\n"+t<< endl; cout <<"┌──────────────┬─────────────────────┬──────┬─────┬─────────┬───────┐\n" <<"│ Field │ Type │ Null │ Key │ Default │ Extra │\n" <<"├──────────────┼─────────────────────┼──────┼─────┼─────────┼───────┤\n"; pstmt2 = con->prepareStatement("DESCRIBE "+t+";"); rt = pstmt2->executeQuery(); while (rt->next()) cout<< "│ "+ change(12, rt->getString(1)) + " │ "+ change(19, rt->getString(2)) + " │ "+ change( 4, rt->getString(3)) + " │ "+ change( 3, rt->getString(4)) + " │ "+ change( 7, rt->getString(5)) + " │ "+ change( 5, rt->getString(6)) + " │\n"; cout << "└──────────────┴─────────────────────┴──────┴─────┴─────────┴───────┘\n"; delete pstmt2; delete rt; } delete res; delete pstmt; delete con; } catch (sql::SQLException &e) { cout << "Помилка: виняток SQL у " << __FILE__ << "(" << __FUNCTION__ << ") у рядку " << __LINE__ << endl; cout << "Помилка: " << e.what() << " (MySQL error code: " << e.getErrorCode() << ", SQLState: " << e.getSQLState() << " )" << endl; } return 0; }