mysqlc語言linux
找不到庫的路徑,或者你的include的路徑不正確,請檢查下你的配置的include路徑是否包含有你的include文件。
還有注意編譯時:
cc -o test test.c 【libmysqlclient.a】 -g ...
要寫上這個庫...
或
gcc -o test -L/usr/lib/mysql -lmysqlclient test.c
『貳』 linux系統下c語言連接mysql資料庫時有關mysql_error這個函數的返回值的問題,求知情人士
應該這樣用,連接的時候不要指定資料庫,分步操作和檢測
if(!mysql_real_connect(character_ptr,"localhost","root","24157518",
NULL
,0,NULL,0))
printf("Error
connecting
to
server:
%s\n",
mysql_error(character_ptr));
if(!mysql_select_db(character_ptr,
"test_database"))
printf("Error
connecting
to
database:
%s\n",
mysql_error(character_ptr));
『叄』 linux系統下 c語言 mysql編程如何把查詢到的表多個欄位內容保存到變數裡面。
mysql不是這樣用的
sql="select tlr_no,commid from ol_transdetail where tran_date='0605'櫻磨虧 and tran_time='171721' and seqno='000137'";
mysql_query( conn, sql );
定義一個數據集游唯 MYSQL_RES *res ;
res=mysql_store_result( conn );
再定義一個脊神行數據變數 MYSQL_ROW row ;
row=mysql_fetch_row( res );
row[0] is tlr_no
row[1] is commid
『肆』 關於linux下用C語言編程,往mysql資料庫里存數據問題。求高人指教
int a;
char c[16];
char sql[128];
a=112;
b="棚型Anv";
memset(sql, 0, sizeof(sql));
sprintf(sql, "insert into b values(%d,'兆和茄族察%s')",a,b);
res = mysql_query(&my_connection,sql);
『伍』 關於linux下c語言鏈接mysql
和.net同樣的道理,你在.net也需要在你的部署包中包含dll才能去連接,除非你靜態聯接了相關的code,
在linux下你需要下載mysql的c庫開發包(libmysql++-dev
libmysql++2c2a
libmysqlclient15-dev
libmysqlclient15off)
這裡面已經包含了動態庫和靜態庫,如果是靜態庫鏈接,你就只需要把你的程序部署給別人即可,如果是動態鏈接,還需要把相關的.so也包含在你的部署包中分發給使用者
『陸』 linux下C語言操作mysql出錯的問題
要襲運衡不你把mysql
的包路徑放到LIB變數里,
用export
LIB
重新聲明一下看看
還有,可能許可權不夠,所以你試悄宏著ROOT許可權編譯拍做
一下看看。
『柒』 求教高人,linux下c語言如何連接mysql資料庫啊,求高手給點資料,謝謝。
幫你一下吧,我只能粗寫,你自己詳細參考一下函數庫,下面localhost,是資料庫伺服器的地址,
username,password分別為訪早滑鏈問資料庫所需要的用戶名和密碼,database是資料庫的名稱,請你參考MYSQL結構體以獲取更加詳細的參數信息
#include <讓清stdlib.h>
#include<stdio.h>
#include "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,"localhost","username","password","database"陸孫,0,NULL,0);
if(conn_ptr){
printf("Connection success\n");
}else{
printf("Connection failed\n");
}
mysql_close(conn_ptr);
return EXIT_SUCCESS;
}
『捌』 linux下c語言連接Mysql
老大,原來你連 C 的原理都不會啊?
C 語言所有調用函數,都要有聲明,這種外部函數庫的調用,都要用他們的 header 文件來聲明函數變數等等的東西,編譯器會根據實際情況去把這些程序裡面的函數調用鏈接到函數庫的正確位置上。
微軟的產品因為他壟斷了他自己系統的所有功能設計。所以他的系統+他的開發程序+他的開發函數庫就不需要 header 文件了,因為它可以設計為 dll 本身含有足夠的信息去干別的事情了。所以,你別以為你用了微軟的 .net ,他就還是 C 語言了。他已經脫離了 C 語言的范圍了。
GCC一般情況下是編譯器,但編譯器是不夠的,還需要連接器的工作才行。binutils 裡面的軟體提供相關的功能。
要知道以前鏈接到函數庫功能,光有 header 和函數庫文件本體還是不行的,還需要另外的函數庫信息文件來幫助編譯器連接器來找到正確的函數入口位置才行的。
你編程 C ,你要選擇你所使用的功能調用方法,GCC 一般調用 mysql 有調用外部 dll ,或者程序自己直接鏈接 mysql 埠,自己分析 mysql 服務進程發送的各種信息!
前一種辦法,可以直接選擇 mysql 客戶端裡面的 SDK 來直接獲得官方的功能支持,但官方 MySQL 是 GPL 協議發布的,你使用他的功能介面後,你的程序也必須以 GPL 發布,不然你就要去選擇其他的函數庫,比如 ODBC 的 mysql 庫。當然還有第三方的 mysql 功能庫可以選擇。
不過你要注意,LGPL 必須嚴格區分你的程序和 LGPL 代碼。你必須動態鏈接到 LGPL 函數庫。如果你的程序包含 LGPL 函數庫一起發布,且 LGPL 庫是你的軟體的必備函數庫,那麼你的程序也必須開源,但不是 GPL 而是 LGPL !
不然你就選擇自己寫程序直接與 mysql 伺服器進行數據傳輸,不使用第三方功能庫。
但我不認為身為一個 Linux 下程序開發人員,會去傻傻的自己寫功能函數而不是用現成的函數庫。
你所遇到的「非要客戶安裝 mysql client 」,就是因為你的軟體調用了一些非你自己編寫的函數調用功能,而為了獲取這些函數而需要安裝幾個 mysql 函數庫的問題。
這個問題我想不應該是一個開發人員提出來的吧?
------------------------------------
樓主你還是重新學習 C 語言吧。.net 的 C 被微軟改的不是真正的 C 語言了,所以你沒辦法按照 C 的標准去比較 .net 和 GCC 的。
而且很多 .net 的編程習慣也沒辦法延續到 GCC 的。
『玖』 linux下用C語言鏈接mysql
安裝mysql-陵行devel的rpm 。。。
這是mysql的開發包。他提供了基本操作尺宏嘩介面。
安裝後,頭文件在 /usr/絕嘩include/mysql/...
而動態庫在 /usr/lib/mysql/
再查查資料。
mysql_init;
mysql_options;
mysql_real_connect;
mysql_real_query;
mysql_close;
『拾』 linux下用C語言對mysql中select語句的封裝
1.需要用到mysql c api
2.步驟通常是:連接資料庫,執行查詢,異常處理這些。
3.你需要對api 進行一些了解,然後合理調用。
參考代碼:
//連接代碼:
/*
* connect1.c - connect to and disconnect from MySQL server
*/
#include <my_global.h>
#include <my_sys.h>
#include <mysql.h>
static char *opt_host_name = NULL; /* server host (default=localhost) */
static char *opt_user_name = NULL; /* username (default=login name) */
static char *opt_password = NULL; /* password (default=none) */
static unsigned int opt_port_num = 0; /* port number (use built-in value) */
static char *opt_socket_name = NULL; /* socket name (use built-in value) */
static char *opt_db_name = NULL; /* database name (default=none) */
static unsigned int opt_flags = 0; /* connection flags (none) */
static MYSQL *conn; /* pointer to connection handler */
int
main (int argc, char *argv[])
{
/* initialize connection handler */
conn = mysql_init (NULL);
if (conn == NULL)
{
fprintf (stderr, "mysql_init() failed (probably out of memory)\n");
exit (1);
}
/* connect to server */
if (mysql_real_connect (conn, opt_host_name, opt_user_name, opt_password,
opt_db_name, opt_port_num, opt_socket_name, opt_flags) == NULL)
{
fprintf (stderr, "mysql_real_connect() failed\n");
mysql_close (conn);
exit (1);
}
/* disconnect from server */
mysql_close (conn);
exit (0);
}
//處理sql 語句的函數:
void
process_statement (MYSQL *conn, char *stmt_str)
{
MYSQL_RES *res_set;
if (mysql_query (conn, stmt_str) != 0) /* the statement failed */
{
print_error (conn, "Could not execute statement");
return;
}
/* the statement succeeded; determine whether it returned data */
res_set = mysql_store_result (conn);
if (res_set) /* a result set was returned */
{
/* process rows and then free the result set */
process_result_set (conn, res_set);
mysql_free_result (res_set);
}
else /* no result set was returned */
{
/*
* does the lack of a result set mean that the statement didn't
* return one, or that it should have but an error occurred?
*/
if (mysql_field_count (conn) == 0)
{
/*
* statement generated no result set (it was not a SELECT,
* SHOW, DESCRIBE, etc.); just report rows-affected value.
*/
391
Processing SQL Statements
printf ("%lu rows affected\n",
(unsigned long) mysql_affected_rows (conn));
}
else /* an error occurred */
{
print_error (conn, "Could not retrieve result set");
}
}
}
//以上提供的是常規的處理,你需要根據實際情況完善。
//同時調用了一些mysql 的api函數。
ref:
MySQL
(Fourth Edition)
Paul DuBois