㈠ 關於linux下c語言鏈接mysql
和.net同樣的道理,你在.net也需要在你的部署包中包含dll才能去連接,除非你靜態聯接了相關的code,
在linux下你需要下載mysql的c庫開發包(libmysql++-dev
libmysql++2c2a
libmysqlclient15-dev
libmysqlclient15off)
這裡面已經包含了動態庫和靜態庫,如果是靜態庫鏈接,你就只需要把你的程序部署給別人即可,如果是動態鏈接,還需要把相關的.so也包含在你的部署包中分發給使用者
㈡ linux怎麼啟動mysql服務
1、首先,我們需要修改mysql的配置文件,一般文件存放在/etc下面,文件名為my.cnf。
㈢ 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 mysql 怎麼用
啟動:net start mySql;
進入:mysql -u root -p/mysql -h localhost -u root -p databaseName;
列出資料庫:show databases;
選擇資料庫:use databaseName;
列出表格:show tables;
顯示表格列的屬性:show columns from tableName;
建立資料庫:source fileName.txt;
匹配字元:可以用通配符_代表任何一個字元,%代表任何字元串;
增加一個欄位:alter table tabelName add column fieldName dateType;
增加多個欄位:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;
多行命令輸入:注意不能將單詞斷開;當插入或更改數據時,不能將欄位的字元串展開到多行里,否則硬回車將被儲存到數據中;
增加一個管理員帳戶:grant all on *.* to user@localhost identified by "password";
每條語句輸入完畢後要在末尾填加分號';',或者填加'\g'也可以;
查詢時間:select now();
查詢當前用戶:select user();
查詢資料庫版本:select version();
查詢當前使用的資料庫:select database();
1、刪除student_course資料庫中的students數據表:
rm -f student_course/students.*
2、備份資料庫:(將資料庫test備份)
mysqlmp -u root -p test>c:\test.txt
備份表格:(備份test資料庫下的mytable表格)
mysqlmp -u root -p test mytable>c:\test.txt
將備份數據導入到資料庫:(導回test資料庫)
mysql -u root -p test
3、創建臨時表:(建立臨時表zengchao)
create temporary table zengchao(name varchar(10));
4、創建表是先判斷表是否存在
create table if not exists students(……);
5、從已經有的表中復製表的結構
create table table2 select * from table1 where 1<>1;
6、復製表
create table table2 select * from table1;
7、對表重新命名
alter table table1 rename as table2;
8、修改列的類型
alter table table1 modify id int unsigned;//修改列id的類型為int unsigned
alter table table1 change id sid int unsigned;//修改列id的名字為sid,而且把屬性修改為int unsigned
9、創建索引
alter table table1 add index ind_id (id);
create index ind_id on table1 (id);
create unique index ind_id on table1 (id);//建立唯一性索引
10、刪除索引
drop index idx_id on table1;
alter table table1 drop index ind_id;
11、聯合字元或者多個列(將列id與":"和列name和"="連接)
select concat(id,':',name,'=') from students;
12、limit(選出10到20條)<第一個記錄集的編號是0>
select * from students order by id limit 9,10;
13、MySQL不支持的功能
事務,視圖,外鍵和引用完整性,存儲過程和觸發器
14、MySQL會使用索引的操作符號
<,<=,>=,>,=,between,in,不帶%或者_開頭的like
15、使用索引的缺點
1)減慢增刪改數據的速度;
2)佔用磁碟空間;
3)增加查詢優化器的負擔;
當查詢優化器生成執行計劃時,會考慮索引,太多的索引會給查詢優化器增加工作量,導致無法選擇最優的查詢方案;
16、分析索引效率
方法:在一般的SQL語句前加上explain;
分析結果的含義:
1)table:表名;
2)type:連接的類型,(ALL/Range/Ref)。其中ref是最理想的;
3)possible_keys:查詢可以利用的索引名;
4)key:實際使用的索引;
5)key_len:索引中被使用部分的長度(位元組);
6)ref:顯示列名字或者"const"(不明白什麼意思);
7)rows:顯示MySQL認為在找到正確結果之前必須掃描的行數;
8)extra:MySQL的建議;
17、使用較短的定長列
1)盡可能使用較短的數據類型;
2)盡可能使用定長數據類型;
a)用char代替varchar,固定長度的數據處理比變長的快些;
b)對於頻繁修改的表,磁碟容易形成碎片,從而影響資料庫的整體性能;
c)萬一出現數據表崩潰,使用固定長度數據行的表更容易重新構造。使用固定長度的數據行,每個記錄的開始位置都是固定記錄長度的倍數,可以很容易被檢測到,但是使用可變長度的數據行就不一定了;
d)對於MyISAM類型的數據表,雖然轉換成固定長度的數據列可以提高性能,但是占據的空間也大;
18、使用not null和enum
盡量將列定義為not null,這樣可使數據的出來更快,所需的空間更少,而且在查詢時,MySQL不需要檢查是否存在特例,即null值,從而優化查詢;
如果一列只含有有限數目的特定值,如性別,是否有效或者入學年份等,在這種情況下應該考慮將其轉換為enum列的值,MySQL處理的更快,因為所有的enum值在系統內都是以標識數值來表示的;
19、使用optimize table
對於經常修改的表,容易產生碎片,使在查詢資料庫時必須讀取更多的磁碟塊,降低查詢性能。具有可變長的表都存在磁碟碎片問題,這個問題對blob數據類型更為突出,因為其尺寸變化非常大。可以通過使用optimize table來整理碎片,保證資料庫性能不下降,優化那些受碎片影響的數據表。 optimize table可以用於MyISAM和BDB類型的數據表。實際上任何碎片整理方法都是用mysqlmp來轉存數據表,然後使用轉存後的文件並重新建數據表;
20、使用procere analyse()
可以使用procere analyse()顯示最佳類型的建議,使用很簡單,在select語句後面加上procere analyse()就可以了;例如:
select * from students procere analyse();
select * from students procere analyse(16,256);
第二條語句要求procere analyse()不要建議含有多於16個值,或者含有多於256位元組的enum類型,如果沒有限制,輸出可能會很長;
21、使用查詢緩存
1)查詢緩存的工作方式:
第一次執行某條select語句時,伺服器記住該查詢的文本內容和查詢結果,存儲在緩存中,下次碰到這個語句時,直接從緩存中返回結果;當更新數據表後,該數據表的任何緩存查詢都變成無效的,並且會被丟棄。
2)配置緩存參數:
變數:query_cache _type,查詢緩存的操作模式。有3中模式,0:不緩存;1:緩存查詢,除非與 select sql_no_cache開頭;2:根據需要只緩存那些以select sql_cache開頭的查詢; query_cache_size:設置查詢緩存的最大結果集的大小,比這個值大的不會被緩存。
22、調整硬體
1)在機器上裝更多的內存;
2)增加更快的硬碟以減少I/O等待時間;
尋道時間是決定性能的主要因素,逐字地移動磁頭是最慢的,一旦磁頭定位,從磁軌讀則很快;
3)在不同的物理硬碟設備上重新分配磁碟活動;
如果可能,應將最繁忙的資料庫存放在不同的物理設備上,這跟使用同一物理設備的不同分區是不同的,因為它們將爭用相同的物理資源(磁頭)。
㈤ linux下用c語言操作mysql資料庫。
不好意思,沒看見標題,我寫的是腳本語言
我把你說的buff當成一個文件了
ID=`sed -n '1p' buff | awk '{printf $1}'`
NAME=`sed -n '1p' buff | awk '{printf $2}'`
SCORE=`sed -n '1p' buff | awk '{printf $3}'`
mysql_query(conn_ptr,"INSERT INTO student(id,name,score) values('$ID','$NAME','$SCORE')");
㈥ linux下c語言操作MYSQL編譯報錯
#include<mysql/mysql.h>
#include<stdio.h>
#include<stdlib.h>
#define HOST "localhost"
#define USERNAME "用戶名"
#define PASSWORD "密碼"
#define DATABASE "指定的資料庫"
#define SQL_QUERY "SELECT*FROM表名"
intmain(void)
{
MYSQLmysql;
MYSQL_ROWrow;
MYSQL_RES*result;
unsignedintnum_fields;
unsignedinti;
mysql_init(&mysql);
if(!mysql_real_connect(&mysql,HOST,USERNAME,PASSWORD,DATABASE,0,NULL,0))
{
printf("Connectionfailed,%s ",mysql_error(&mysql));
}
mysql_query(&mysql,"setnamesutf8");
if(!mysql_query(&mysql,SQL_QUERY))
{
result=mysql_store_result(&mysql);
if(!result)
{
perror("resulterror.");
exit(1);
}
num_fields=mysql_num_fields(result);
while(row=mysql_fetch_row(result))
{
for(i=0;i<num_fields;i++)
{
printf("%s ",row[i]);
}
printf(" ");
}
mysql_free_result(result);
}
mysql_close(&mysql);
return0;
}
編譯命令:
gcc -o mysql_test mysql_test.c -lmysqlclient
運行命令:
./mysql_test
㈦ 求教高人,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下怎麼啟動mysql服務
一、啟動方式
1、使用linux命令service 啟動:
service mysqld start
2、使用 mysqld 腳本啟動:
/etc/inint.d/mysqld start
3、使用 safe_mysqld 啟動:
safe_mysqld& 命令使用方法及介紹可如下查找:
㈨ 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
的包路徑放到LIB變數里,
用export
LIB
重新聲明一下看看
還有,可能許可權不夠,所以你試著ROOT許可權編譯
一下看看。