1. 程式人生 > >Linux C語言連線MySQL 增刪改查操作

Linux C語言連線MySQL 增刪改查操作

Linux下想要測試mysql和memcached的效能,因為是伺服器只能通過終端連線,所以考慮用C語言寫測試程式碼。於是研究了把C怎麼連線MySQL以及增刪改查的程式碼。安裝mysql-client或者編譯原始碼安裝mysql後,會有支援C語言寫客戶端的標頭檔案和庫檔案,但是目錄可能不一樣,mysql原始碼安裝見 http://asyty.iteye.com/blog/1442503

從網上找了類似的程式碼改改後如下

連線資料庫

#include <stdlib.h>
#include <stdio.h>
#include <mysql.h>
int main() {
	MYSQL *conn_ptr;

	conn_ptr = mysql_init(NULL);
	if (!conn_ptr) {
		printf("mysql_init failed\n");
		return EXIT_FAILURE;
	}
	conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root", "123456", "test", 0, NULL, 0);
	//root 為使用者名稱 123456為密碼 test為要連線的database

	if (conn_ptr) {
		printf("Connection success\n");
	} else {
		printf("Connection failed\n");
	}
	mysql_close(conn_ptr);
	return EXIT_SUCCESS;
}

通過gcc編譯(我的mysql原始碼安裝目錄為 /usr/local/mysql)

gcc -o connect -g connect.c  -I /usr/local/mysql/include/ -L /usr/local/mysql/lib/ -l mysqlclient

引數說明:-I(大寫的i) 表示要連線的標頭檔案目錄,因為使用了<mysql.h> ,-L表示要連線的庫檔案目錄 -l(小寫的L) 表示要連線的具體的庫名稱,在/usr/local/mysql/lib/ 下,有叫做libmysqlclient.so的庫,指定具體的庫的名字時,預設去掉頭尾的lib和.so直接使用中間的mysqlclient

如果不用-I -L ,可能導致找不到標頭檔案 或者 函式未定義的錯誤

如果出現錯誤error while loading shared libraries,那是因為.so沒有被系統載入,解決辦法如下

vi /etc/ld.so.conf // 開啟ld.so.conf檔案,增加.so檔案的路徑,比如/usr/local/mysql/lib/

ldconfig//重新載入.so檔案


查詢程式碼  
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
int main() {
	MYSQL *conn_ptr;
	MYSQL_RES *res_ptr;
  	MYSQL_ROW sqlrow;
	MYSQL_FIELD *fd;
	int res, i, j;

	conn_ptr = mysql_init(NULL);
	if (!conn_ptr) {
		return EXIT_FAILURE;
	}
	conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root", "123456", "test", 0, NULL, 0);
	if (conn_ptr) {
		res = mysql_query(conn_ptr, "select name,age from user"); //查詢語句
		if (res) {       
			printf("SELECT error:%s\n",mysql_error(conn_ptr));   
		} else {      
			res_ptr = mysql_store_result(conn_ptr);				//取出結果集
			if(res_ptr) {             
				printf("%lu Rows\n",(unsigned long)mysql_num_rows(res_ptr)); 
				j = mysql_num_fields(res_ptr);        
				while((sqlrow = mysql_fetch_row(res_ptr)))  {	//依次取出記錄
					for(i = 0; i < j; i++)       
						printf("%s\t", sqlrow[i]); 				//輸出
					printf("\n");        
				}            
				if (mysql_errno(conn_ptr)) {                    
					fprintf(stderr,"Retrive error:s\n",mysql_error(conn_ptr));             
				}      
			}      
			mysql_free_result(res_ptr);      
		}
	} else {
		printf("Connection failed\n");
	}
	mysql_close(conn_ptr);
	return EXIT_SUCCESS;
}


插入更新及刪除 

#include <stdlib.h>
#include <stdio.h>
#include <mysql.h>
int main() {
	MYSQL *conn_ptr;
	int res;

	conn_ptr = mysql_init(NULL);
	if (!conn_ptr) {
		printf("mysql_init failed\n");
		return EXIT_FAILURE;
	}
	conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root", "123456", "test", 0, NULL, 0);
	if (conn_ptr) {
		res = mysql_query(conn_ptr, "insert into user values(null,'Ann',5)"); 	//可以把insert語句替換成delete或者update語句,都一樣的
//		res = mysql_query(conn_ptr, "delete from user where name = 'Ann' and age < 10");
		if (!res) {		//輸出受影響的行數
			printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(conn_ptr));	
		}  else {		//打印出錯誤程式碼及詳細資訊
			fprintf(stderr, "Insert error %d: %sn",mysql_errno(conn_ptr),mysql_error(conn_ptr));
		}
	} else {
		printf("Connection failed\n");
	}
	mysql_close(conn_ptr);
	return EXIT_SUCCESS;
}
原文:http://asyty.iteye.com/blog/1447092

相關推薦

Linux C語言連線MySQL 刪改操作

Linux下想要測試mysql和memcached的效能,因為是伺服器只能通過終端連線,所以考慮用C語言寫測試程式碼。於是研究了把C怎麼連線MySQL以及增刪改查的程式碼。安裝mysql-client或者編譯原始碼安裝mysql後,會有支援C語言寫客戶端的標頭檔案和庫檔案

c# 連線mysql 刪改操作

Console.WriteLine ( "編號:" + reader.GetInt32 ( 0 ) + "|姓名:" + reader.GetString ( 1 ) + "|年齡:" + reader.GetInt32 ( 2 ) + "|學歷:" + reader.GetStrin

node總結之MySQL刪改操作了解下

廢話不多說啊,先來看node中安裝MySQL包的命令: cnpm install mysql 完事看個簡單的查詢例項,先來感受下: var mysql = require('mysql'); var connection = mysql.createConnection({

mysql刪改操作集錦

資料庫的操作指令: 新增資料庫: mysql> create datatable database_name; 檢視已建立的資料庫: mysql> show datdabases

MySQL刪改操作例項

學習MySQL中對於表這種MySQL物件的增刪改查操作後,列出一些例項,在此用於記錄對應功能的語法細節,便於日後遺忘時檢視。 需求:插入一條學生資訊 1.插入一條資料 INSERT INTO t_student (name) VALUES('陸小鳳') 2.插入

Java 連線 Mongodb 刪改操作

對於NoSQL並沒有一個明確的範圍和定義,但是他們都普遍存在下面一些共同特徵: 不需要預定義模式:不需要事先定義資料模式,預定義表結構。資料中的每條記錄都可能有不同的屬性和格式。當插入資料時,並不需要預先定義它們的模式。 無共享架構:相對於將所有資料儲存的儲

Python中MongoDB的連線刪改操作

導包 import pymongo 若沒有該模組,進入cmd, pip install pymongo 連線mongodb mongoclient = pymongo.MongoClient("localhost",port=27017

lua 連線mysql資料庫實現刪改操作linux下示例)

(1)linux下連線資料庫: mysql -u root -p,-u 指定登入使用者,-p 指定密碼。 [[email protected]18 develop]$ mysql -u root -p Enter password: Welcome to the MySQ

【Mac系統 + Python + Django】之開發一個釋出會系統【Django模型(二)】 【Mac系統 + Mysql】之安裝Mysql資料庫 【Python + Mysql】之用pymysql庫連線Mysql資料庫並進行刪改操作

上一部分給大家介紹Django的檢視。 接下來繼續來了解Django框架,來看第二部分,此部分是對資料庫的操作。   目錄: 一、設計系統表 二、admin後臺管理 三、基本資料訪問(SQLite資料庫) 四、Django配置MySQL   &

Linux資料庫管理——day1——安裝MySQL、基本刪改操作

  資料庫: DB 資料庫 依照某個資料模型進行組織並存放到儲存器中 DBMS 資料庫管理系統 用來控制和管理資料的服務軟體 DBS 資料庫系統

mysql資料庫的連線以及刪改Java程式碼實現(Statement版)

資料庫: create table t1(id int primary key not null auto_increment,name varchar(32),password varchar(32)); insert into t1(name,password) va

mysql資料庫的連線以及刪改Java程式碼實現(PreparedStatement版)

資料庫: create table t1(id int primary key not null auto_increment,name varchar(32),password varchar(32)); insert into t1(name,password) v

python3使用pymysql連線Mysql 資料庫及 簡單的刪改操作

示例表1查詢操作import pymysql #匯入 pymysql #開啟資料庫連線 db= pymysql.connect(host="localhost",user="root", password="123456",db="test",po

JDBC——用JDBC連線MySQL資料庫並進行簡單的刪改操作

一、什麼是JDBC Java 資料庫連線,(Java Database Connectivity,簡稱JDBC)是Java語言中用來規範客戶端程式如何來訪問資料庫的應用程式介面,提供了諸如查詢和更新資料庫中資料的方法。(摘自維基百科) 二、簡單的JDBC例項 現在使用JDB

Linux程式設計——C語言連線MySQL資料庫

MySQL是Linux系統下廣泛使用的開源免費資料庫,是Linux應用程式資料儲存的首選。許多釋出的Linux版本是自帶MySQL的,但是也有些釋出版本是不帶的(比如我現在用的Ubuntu),那就需要手動安裝。在Synaptic Packet Management中搜索“m

php連線Mysql刪改操作

php程式碼:<?php $conn=mysql_connect('localhost','root',''); if(!$conn){ echo "connect failed"; exit;

C#連線資料庫刪改程式碼 SQL SERVER/ACCESS 通用類

using System.Data.OleDb; using System.Data; public static class DataTools { private static OleDbConnection oleCo

python 連線mysql資料庫 進行刪改操作

1、在進行連線之前我們要確定我們已經安裝了python和mysql(開玩笑,沒有這個你怎麼連線那)至於安裝的過程在此略過, 2、因為要進行連線mysqldb 所有我們要匯入MySQLdb的模組,當然這個模組在預設的python中是沒有的,https://pypi.pytho

c# mysql刪改

ExecuteNonQuery 不返回任何行,但對映到引數的任何輸出引數或返回值都會用資料進行填充。 對於 UPDATE、INSERT 和 DELETE 語句,返回值為該命令所影響的行數。 對於所有其他型別的語句,返回值為 -1。 如果發生回滾,返回值也為 -1  Stri

ado.net 用c#與資料庫連線實現刪改

ADO.NET:資料訪問技術就是將C#和MSSQL連線起來的一個紐帶可以通過ADO.NET將記憶體中的臨時資料寫入到資料庫中也可以將資料庫中的資料提取到記憶體中供程式呼叫是所有資料訪問技術的基礎,也有更高階的奇數,不過都是基於ado.net的連線資料庫基本格式:需要兩個類1、