序文
データベースへの接続Linuxオペレーティング・データベース上でのJavaの使用中は通常よりですが、C / C ++より重要である、多くの時間を取得するために使用することができますが、インターネットにチュートリアルの多くを確認し、主に独自の方法を通じて問題のいくつかによって書かれ、そして最終的に成功MariaDBの接続は、それが参照するレコード。
:アリクラウド開発環境は、yumをMariaDBを使用してインストールし、インストールチュートリアルでは、私は別の記事参照CentOS7 64魏ですCentOS7 MariaDBのインストールと設定を
インストールツールを探します
ファイルのパスを見つけるすぐに見つけ使用して、Linuxシステムの一部のバージョンには、次のエラーが報告されます。
-bash: locate: command not found
その理由は、mlocateこのパッケージをインストールされていない、mlocateをインストール
yum -y install mlocate
インストールされた後、まだありません助け、新しいバグを報告しない見つかったコンテンツを見つけて探してみてください
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
その理由は、ライブラリを更新し、ライブラリのインストール後に更新されません。
updatedb
インストールが完了したら、ファイルのパスを見つけるすばやく見つける使用することができます
C ++接続MariaDB
データベースプログラムへの簡単な接続を見てください
#include <stdlib.h>
#include <stdio.h>
#include "mysql/mysql.h"
int main( int argc, char *argv[] )
{
MYSQL *conn_ptr;
conn_ptr = mysql_init( NULL ); /* 连接初始化 */
if ( !conn_ptr )
{
fprintf( stderr, "mysql_init failed\n" );
return(EXIT_FAILURE);
}
conn_ptr = mysql_real_connect( conn_ptr, "x.x.x.x", "root", "passwd", "dbname", 0, NULL, 0 ); /* 建立实际连接 */
/* 参数分别为:初始化的连接句柄指针,主机名(或者IP),用户名,密码,数据库名,0,NULL,0)后面三个参数在默认安装mysql>的情况下不用改 */
if ( conn_ptr ){
printf( "Connection success\n" );
}
else{
printf( "Connection failed\n" );
}
mysql_close( conn_ptr ); /* 关闭连接 */
return(EXIT_SUCCESS);
}
MySQLへ接続するには、最初のヘッダーファイルを追加する必要があります。#include <mysql/mysql.h>
そして、あなたのMakefileに追加-I/usr/include/mysql
し、-L/usr/lib64/mysql
そして-lmysqlclient
解決するには、他のエラーが発生した場合は、最後の質問の下に表示さ
など:
CC=g++ #编译器
CFLAGS=-g #可以使用gdb调试
BIN=MicroChatServer #生成的可执行目标文件名
OBJS=sysutil.o #.c/.cpp文件对应的.o目标文件
LIBS=-I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient -ljsoncpp -lpthread #链接库
$(BIN):$(OBJS)
$(CC) $(CFLAGS) $^ -o $@ $(LIBS)
%.o:%.cpp
$(CC) $(CFLAGS) -c $< -o $@
.PHONY:clean #清理所有目标文件和可执行文件
clean:
rm -f *.o $(BIN)
次に作る、あなたが正常に実行することができます
問題解決
質問1:
connect1.c:4:19:エラー:mysql.h:そのようなファイルやディレクトリの
プロンプトがmysql.hを発見していないされていない、何のmysql.hファイルが存在しないため、このエラーが発生し、それは、MySQL-develのパッケージを、あなたは、このパッケージをインストールする必要があります。
sudo yum install mysql-devel -y
そして、それを見つけます:
# locate mysql.h
/usr/include/mysql/mysql.h
(男性用のgccを参照して、ヘッダファイルの指定された場所の検索にあった-Iを意味する)のヘッダファイルを見つけることができますので。
質問2:
再構築しようとすると、エラーがありました:
# gcc connect1.c -o connect1 -I/usr/include/mysql -lmysqlclient
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld 返回 1
DLLの問題は、あるmysqlclientリンクライブラリを見つけることができない、男のgccがそれでははmysqlclientライブラリの場所を見つけてみましょう、背中に-Lと検索位置を指定することが見つかりました:
# locate *mysqlclient*
/usr/lib64/mysql/libmysqlclient.so
/usr/lib64/mysql/libmysqlclient.so.18
/usr/lib64/mysql/libmysqlclient.so.18.0.0
/usr/lib64/mysql/libmysqlclient_r.so
ここではいくつかのシステムでは、説明するの/usr/lib/mysql/
下に、私はCentOS7 64ビットでそれを使用しています/usr/lib64/mysql/
ブログの記事の多くははっきり言わなかったので、あなたはmlocateは、ライブラリの位置を決定インストールする理由であるダウン、しかし、直接彼はにと言った/usr/lib/mysql/
次の、システムの一部になることに成功したリンクやエラーにできませんでした
場所を見つけた後、あなたがコンパイルできます。
gcc connect1.c -o connect1 -I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient
彼が実行し、その前に、mysqldがすでに実行されていることを確認してくださいことができますので、成功したコンパイルします。
sudo /etc/rc.d/init.d/mysqld restart
そして、結果の実行可能ファイルを実行します。
./connect1
Connection success
私たちは正常に接続するための印刷情報の優れたデザインをプリントアウトします。MySQLデータベースに接続し、この成功したC / C ++言語