Linuxでのmysqlのインストールと使用(C言語)

6475 ワード

1 mysqlのインストール
私が使っているubuntuのオンラインインストールは、非常に簡単で、コマンドは:
sudo apt-get install mysql-client mysql-server

2 mysqlコマンドセット
ネットが多すぎるから、copyにしましょう.
1.linuxでmysqlを起動するコマンド:
mysqladmin start
/ect/init.d/mysql start (   mysql     )

2.linuxでmysqlを再起動するコマンド:
mysqladmin restart
/ect/init.d/mysql restart (   mysql     )

3.linuxでmysqlを閉じるコマンド:
mysqladmin shutdown
/ect/init.d/mysql shutdown (   mysql     )

4.本机のmysqlに接続する:ディレクトリmysqlbinに入って、更にコマンドmysql-uroot-pを入力して、车に戻ってからパスワードを入力するように提示します.mysqlコマンドを終了する:exit(リターン)
5.mysqlパスワードの変更:mysqladmin-uユーザー名-p旧パスワードpassword新パスワードまたはmysqlコマンドラインSET PASSWORD FOR root=PASSWORD(「root」);
6.新規ユーザーを追加します.(注:mysql環境のコマンドの後ろにはコマンドの終了記号としてセミコロンが付いています)grant select onデータベース.*to
ユーザ名atログインホスト
identified by「パスワード」ユーザーtestパスワード123を追加すると、任意のホストにログインでき、すべてのデータベースに対してクエリー、挿入、変更、削除の権限が与えられます.まずrootユーザーでmysqlに接続し、次のコマンドを入力します.
grant select,insert,update,delete on *.* to " Identified by "123";

7、データベースのリストを表示します.
show databases;

8.ライブラリ内のデータテーブルを表示する:
use mysql; //   
show tables;

9、データテーブルの構造を表示する:
describe   ;

10、ライブラリの作成:
create database   ;

11、建表:
create table   (      );

12、削除庫と削除表:
drop database   ;
drop table   ;

13、表の記録を空にする:
delete from   ;
truncate table    ;

14、表の記録を表示する:
select * from   ;

15、コードの修正
mysql全体の符号化フォーマットを変更する場合:mysqlを起動するとmysqld_safeコマンドライン加入
--default-character-set=gbk 

ライブラリのエンコードフォーマットを変更する場合は、mysqlプロンプトの後にコマンドを入力します.
alter database db_name default character set gbk;

16、テーブル名の変更
alter table t1 rename t2;

17.sql文の効率の表示
explain < table_name >
例えば、explain select*from t 3 where id=3952602;
18.データベーステーブルにテキストでデータをロードする(例えばD:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;

まだ満足できないなら、ここでAPIを見るに来てください.
2 C言語のAPI関数
mysql C言語のAPIでは、mysql_が頻繁に使用されています.init,mysql_real_connect,mysql_query,mysql_store_result,mysql_fetch_row,mysql_free_result,mysql_close,mysql_init
具体的な使い方は以下の通りです.
(1)mysql_init
役割:MYSQL変数を初期化しmysql_にするreal_接続()の準備をします.
使用方法:
MYSQL *mysql_init(MYSQL *mysql)

戻り値:MYSQLハンドルまたは記述子;メモリ不足はNULLです.
(2)mysql_real_connect
機能:mysqlデータベースをリンクする;
使用方法:
MYSQL *mysql_real_connect(MYSQL *mysql,\

const char *host, const char*user, \

const char *passwd, const char*db, \

unsigned int port, const char*unix_socket, \

unsigned int client_flag)

説明:port!=0は、TCP/IPポートとして使用され、デフォルトは0です.unix_の場合socket!=NULLは、socketまたは名前PIPEを指定し、デフォルトはNULLです.Client_flagは特定の値(略)を指定することができ、デフォルトは0である.
(3)mysql_query
機能:クエリーの実装
使用方法:
int mysql_query(MYSQL *mysql, const char *query)

説明:queryはデータベース操作コマンド文字列であり、本質はクエリー(select)であり、select、update、insert、deleteなどのデータベース操作コマンドを含むことができる.mysql_queryはバイナリデータを処理するために使用できません.バイナリデータを処理するにはmysql_を使用します.real_query.
戻り値:0は正常、0以外はエラーが発生したことを示します.
(4)mysql_store_resul
機能:結果セット処理.mysqlを使用するとQueryは、SELECT文または結果を返すクエリーを実行します.使用可能な関数mysql_store_resultは、戻り結果にアクセスし、さらに処理するために変数に保存します.
使用方法:
MYSQL_RES *mysql_store_result(MYSQL *mysql)

MYSQL_RES *mysql_use_result(MYSQL *mysql)

説明:mysqlはmysql_real_connect関数の戻り値.
(5)結果セットの使用
mysqlを使用しましたstore_result関数は、結果を保存した後、次の関数を使用して結果セットを処理できます.
①結果セットのロー数を取得する:
my_ulonglong mysql_num_rows(MYSQL_RES *result)

②結果セット行のフィールド数を取得する:
unsigned int mysql_num_fields(MYSQL_RES *result)

unsigned int mysql_num_fields(MYSQL *mysql)

③結果セットの1行を読み込む:
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

④結果セット行のドメインセグメント数を取得する:
unsigned int mysql_field_count(MYSQL *mysql)

⑤結果セットのドメインの属性を取得する:
MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)

⑥ドメイン属性配列を取得する:
MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result)

⑦update、delete、insert等の影響を受ける行を問い合わせる:
my_ulonglong mysql_affected_rows(MYSQL *mysql)

(6)後始末
データベースの使用が完了したら、作成した変数などを解放します.
mysql_free_result(result);
mysql_close(&mysql);

(7)エラー処理
方法は2つある:関数の戻り値を利用して関数の実行が正しいかどうかを判断する;2.mysqlで提供されたエラー番号とエラー情報を使用します.
エラー番号:
unsigned int mysql_errno(MYSQL *mysql)

エラーメッセージ:
char *mysql_error(MYSQL *mysql)

(8)補助関数
クライアントのバージョン情報を取得するには、次の手順に従います.
char *mysql_get_client_info(void)

ホスト情報の取得:
char *mysql_get_host_info(MYSQL *mysql)

プロトコルのバージョン情報を取得するには、次の手順に従います.
unsigned int mysql_get_proto_info(MYSQL *mysql)

サーバのバージョン情報を取得するには、次の手順に従います.
char *mysql_get_server_info(MYSQL *mysql)

使用可能なデータベースのリストを取得するには、次の手順に従います.
MYSQL_RES *mysql_list_dbs(MYSQL *mysql, const char *wild)

データベースのテーブルリストを取得するには、次の手順に従います.
MYSQL_RES *mysql_list_tables(MYSQL *mysql, const char *wild)

3 C言語操作mysqlの例
データベースにtestライブラリが作成され、ライブラリにchildrenテーブルがあり、テーブルに小さなデータがあるとします.これらのデータを読み出します.
#include "stdio.h"
#include "string.h"
#include "mysql/mysql.h"

int main()
{
	MYSQL mysql;
	MYSQL_RES *res;
	MYSQL_ROW row;
	int i,j;

	char *query = "select * from children;";

	mysql_init(&mysql);

	if(!mysql_real_connect(&mysql,"localhost","root","open","test",0,NULL,0))
	{
    	printf("Error in connecting");
	}

	if(mysql_query(&mysql,query))
	{
    	printf("Error in querying");
	}

	res = mysql_store_result(&mysql);

	while(row = mysql_fetch_row(res))
	{
    	for(i=0;i<mysql_num_fields(res);i++)
    	{
        	fprintf(stdout,"%s ",row[i]);
    	}
    	printf("
"); } mysql_free_result(res); mysql_close(&mysql); return 0; }