10bet网址
MySQL 5.6リファレンスマニュアル
本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb


23.6.4組み込みサバの例

これらの2つのプログラム例は,LinuxまたはFreeBSDシステムを変更せずに,機能するはずです。その他のオペレティングシステムでは,たいていファルパスによる小さな変更が必要です。これらの例は,実際のアプリケーションの必要部分である余計なものなしに,問題を理解するために十分な詳細を与えるように設計されています。最初の例は,きわめて単純です。2番目の例は,いく。最初のもののあとに、プログラムをコンパ以及ルするためのコマンド行エントリが続いています。2 .目のあとには,代わりにコンパereplicationルに使用できるgnuメereplicationクファereplicationルが続いています。

例 1

test1_libmysqld.c

#include  #include  #include  #include " MYSQL .h" MYSQL * MYSQL;MYSQL_RES *结果;MYSQL_ROW记录;static char *server_options[] = \ {"mysql_test", "——defaults-file=my.cnf", NULL};Int num_elements = (sizeof(server_options) / sizeof(char *)) - 1;static char *server_groups[] = {"libmysqld_server", "libmysqld_client", NULL};Int main(void) {mysql_library_init(num_elements, server_options, server_groups);mysql = mysql_init(空);mysql_options (mysql, MYSQL_READ_DEFAULT_GROUP libmysqld_client”);mysql_options (mysql, MYSQL_OPT_USE_EMBEDDED_CONNECTION NULL); mysql_real_connect(mysql, NULL,NULL,NULL, "database1", 0,NULL,0); mysql_query(mysql, "SELECT column1, column2 FROM table1"); results = mysql_store_result(mysql); while((record = mysql_fetch_row(results))) { printf("%s - %s \n", record[0], record[1]); } mysql_free_result(results); mysql_close(mysql); mysql_library_end(); return 0; }

これは、上のプログラムをコンパ以及ルするためのコマンド行です。

/usr/local/mysql/bin/mysql_config——include——libmysqld-libs '

例 2

例を試してみるには,MySQLソスディレクトリと同じレベルでtest2_libmysqldディレクトリを作成します。test2_libmysqld.cソスとGNUmakefileをこのディレクトリに保存し,test2_libmysqldディレクトリ内からgnu使を実行します。

test2_libmysqld.c

/* *一个简单的示例客户端,使用嵌入式MySQL服务器库*/ #include < MySQL .h> #include  #include  #include  MySQL *db_connect(const char *dbname);空白db_disconnect (MYSQL * db);(MYSQL *db, const char *query);const char *server_groups[] = {"test2_libmysqld_SERVER", "embedded", "server", NULL};int main(int argc, char **argv) {MYSQL * 1, * 2;/* mysql_library_init()必须在任何其他mysql *函数之前调用。* *你可以使用mysql_library_init(0, NULL, NULL),它*初始化服务器使用groups = {* "server", "embedded", NULL *}。* *在你的$HOME/.my.cnf文件中,你可能想放:[test2_libmysqld_SERVER] language = /path/to/source/of/mysql/sql/share/english *当然,你可以在将argc和argv传递给这个函数之前修改它们。或者你也可以用任何你喜欢的方式创建新的。但是argv中的所有参数(除了* argv[0],它是程序名)都应该是MySQL服务器的有效选项*。 * * If you link this client against the normal mysqlclient * library, this function is just a stub that does nothing. */ mysql_library_init(argc, argv, (char **)server_groups); one = db_connect("test"); two = db_connect(NULL); db_do_query(one, "SHOW TABLE STATUS"); db_do_query(two, "SHOW DATABASES"); mysql_close(two); mysql_close(one); /* This must be called after all other mysql functions */ mysql_library_end(); exit(EXIT_SUCCESS); } static void die(MYSQL *db, char *fmt, ...) { va_list ap; va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); (void)putc('\n', stderr); if (db) db_disconnect(db); exit(EXIT_FAILURE); } MYSQL * db_connect(const char *dbname) { MYSQL *db = mysql_init(NULL); if (!db) die(db, "mysql_init failed: no memory"); /* * Notice that the client and server use separate group names. * This is critical, because the server does not accept the * client's options, and vice versa. */ mysql_options(db, MYSQL_READ_DEFAULT_GROUP, "test2_libmysqld_CLIENT"); if (!mysql_real_connect(db, NULL, NULL, NULL, dbname, 0, NULL, 0)) die(db, "mysql_real_connect failed: %s", mysql_error(db)); return db; } void db_disconnect(MYSQL *db) { mysql_close(db); } void db_do_query(MYSQL *db, const char *query) { if (mysql_query(db, query) != 0) goto err; if (mysql_field_count(db) > 0) { MYSQL_RES *res; MYSQL_ROW row, end_row; int num_fields; if (!(res = mysql_store_result(db))) goto err; num_fields = mysql_num_fields(res); while ((row = mysql_fetch_row(res))) { (void)fputs(">> ", stdout); for (end_row = row + num_fields; row < end_row; ++row) (void)printf("%s\t", row ? (char*)*row : "NULL"); (void)fputc('\n', stdout); } (void)fputc('\n', stdout); mysql_free_result(res); } else (void)printf("Affected rows: %lld\n", mysql_affected_rows(db)); return; err: die(db, "db_do_query failed: %s [%s]", mysql_error(db), query); }

GNUmakefile

#假设MySQL软件安装在/usr/local/mysql inc:= /usr/local/mysql/include/ MySQL lib:= /usr/local/mysql/lib试试这个相反#公司:=(家)/ mysql - 5.6美元/包括#自由:=(家)/ mysql - 5.6美元/ libmysqld CC: = gcc CPPFLAGS: = - $ (inc) -D_THREAD_SAFE -D_REENTRANT CFLAGS: = - g - w - wall LDFLAGS: =静态#你可以改变-lmysqld -lmysqlclient使用#客户机/服务器库LDLIBS = - l $(自由)-lmysqld - lm ldl -lcrypt ifneq($(壳牌grep FreeBSD /版权2 > / dev / null)) # FreeBSD LDFLAGS + = pthread其他Linux LDLIBS + = #假设-lpthread endif #这是简单的一个文件测试程序来源:=$(通配符*.c) objects:= $(patsubst %c,%o,$(sources)) targets:= $(basename $(sources)) all: $(targets) clean: rm -f $(targets) $(objects) *.core . properties:= $(patsubst %c,%o,$(sources)

本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb