程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL嵌入式版本的小程序例子

MySQL嵌入式版本的小程序例子

編輯:關於MYSQL數據庫

    MySQL嵌入式版本越來越式微了。碰巧有個小應用用到了它,順便記錄一下。 
    文檔可以參考http://dev.mysql.com/doc/refman/5.6/en/libmysqld-example.html,看起來年久失修的樣子,沒法一看就懂。 
    希望下面這個簡化的步驟可以起到點作用。 
    1. 下載代碼並且進行版本編譯。這個還比較簡單,文檔說的也很靠譜。 
    $ cmake . -DCMAKE_INSTALL_PREFIX=/home/mysql -DWITH_EMBEDDED_SERVER=1
    $ make clean $ make -j 8 
    $ make install

    2. 寫個小程序 
    $ ls
    GNUmakefile main.cc my.cnf 
    具體代碼就看附件好了,其實很簡單。 
    $ make

    3. 安裝好MySQL,初始化一下
    $ cd /home/mysql
    $ scripts/mysql_install_db --defaults-file=/home/mysql/my.cnf

    4. 啟動小程序
    $ ./main 
    附件:

    ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 # This assumes the MySQL software is installed in /usr/local/mysql #inc      := /usr/local/mysql/include/mysql #lib      := /usr/local/mysql/lib   # If you have not installed the MySQL software yet, try this instead topdir   := /home/mysql/mysql-5.5.35 inc      := $(topdir)/include lib      := $(topdir)/libmysqld   CXX      := g++ CPPFLAGS := -I$(inc) -D_THREAD_SAFE -D_REENTRANT CXXFLAGS := -g -Wall LDFLAGS  := # You can change -lmysqld to -lmysqlclient to use the # client/server library LDLIBS    = -L$(lib) -lmysqld -lm -lcrypt -ldl -lz -lrt   ifneq (,$(shell grep FreeBSD /COPYRIGHT 2>/dev/null)) # FreeBSD LDFLAGS += -pthread else # Assume Linux LDLIBS += -pthread endif   # This works for simple one-file test programs sources := $(wildcard *.cc) objects := $(patsubst %cc,%o,$(sources)) targets := $(basename $(sources))   all: $(targets)   clean:     rm -f $(targets) $(objects) *.core   --- #include <mysql.h> #include <iostream> #include <cassert>   using namespace std;   const char *server_options[] =        { "mysql_test", "--defaults-file=my.cnf", NULL }; int num_elements = (sizeof(server_options) / sizeof(char *)) - 1;   const char *server_groups[]= { "libmysqld_server",                                "libmysqld_client",                                NULL};   bool is_server_started= false;   MYSQL *MySQL= NULL;   const char *db= NULL;   void start_server() {   cout << "enter start_server()" << endl;   if (mysql_library_init(num_elements, (char **) server_options, (char **) server_groups)) {     is_server_started= false;     cout << "ERROR: start server failed." << endl;   }   else {     is_server_started= true;     cout << "INFO: start server OK." << endl;   } }   void stop_server() {   cout << "enter stop_server()" << endl;   mysql_server_end(); }   bool connect_server() {   cout << "enter connect_server()" << endl;   bool rc = true;     MySQL = mysql_init(NULL);   if (!MySQL)     return rc;     if (mysql_real_connect(MySQL, NULL, NULL, NULL, db, 0, NULL, 0))     rc = false;      MySQL->reconnect= 1;   return rc; }   void output_rows(MYSQL_RES *res) {   MYSQL_ROW row;   unsigned long n = 0;     while ((row= mysql_fetch_row(res)) != 0)   {     mysql_field_seek(res, 0);     for (unsigned int i= 0 ; i < mysql_num_fields(res); i++)       cout << "row[" << n++ << "]:"<< row[i] << endl;   } }   bool get_dbs() {   MYSQL_RES *res;     if (!is_server_started)     return true;     if (!(res= mysql_list_dbs(MySQL, "%")))     return true;     output_rows(res);   mysql_free_result(res);   return false; }   int main(int argc, char *argv[]) {   start_server();   if (is_server_started) {     cout << "server started." << endl;     if (!connect_server()) {       get_dbs();     }     stop_server();   }     return 0; }   --- [libmysqld_client]   [libmysqld_server] basedir=/home/mysql/ datadir=/home/mysql/data tmpdir=/home/mysql/tmp log-error=/home/mysql/alert.log lc_messages_dir=/home/mysql/share   innodb_data_home_dir=/home/mysql/data innodb_log_group_home_dir=/home/mysql/data
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved