Ubuntu 13.10下对SQL server操作

来源:互联网 发布:综艺后期制作软件 编辑:程序博客网 时间:2024/05/22 07:01

       很久没碰Oracle、sql server等数据库了,记得在上学的时候学过一些,但毕业后,一直没有使用到,于是就慢慢的淡忘,接下来的项目需要用到数据库存储,没办法只好重新把它们捡起来。借助强大的网络搜索,结合想法,把过程记录下来,以便以后再用到的时候少走弯路。


1、 Sql的安装
去SQL server官方下载Ubuntu版本的安装源,或直接用命令安装。(建议用命令来安装,避免不必要的麻烦)我这里是直接用命令安装的:
sudo apt-get install mysql-server mysql-client 
如果提示找不到安装包,更新一下Ubuntu源
Apt-get update
更新完成后
sudo apt-get install mysql-server mysql-client
如果更新源过后依然提示找不到安装包,则修改/etc/apt/source.list 用以下的源,替换掉原有的源(注意备份原来的)。
deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse


执行
Apt-get update   
sudo apt-get install mysql-server mysql-client
途中会跳出窗口要求输入密码,这个就是mysql的root用户的密码
2、 Mysql开启与关闭命令
sudo start mysql  
sudo stop mysql 
3、 进入mysql的命令如下
mysql -u root –p  
在此,系统会提示输入密码,只需要输入之前设置的MySQL密码即可,然后程序会进入mysql命令行模式。
4、 修改配置文件
Mysql的配置文件在/etc/mysql/my.cnf
5、 在命令行模式下创建database
命令:CREATE DATABASE base;
6、 在base里面创建table表
首先要确定使用哪一个database数据库
命令:use database  base 如果提示:ERROR 1049 (42000): Unknown database 'database'
则使用命令:use ‘base’------->提示Database changed表示成功。
创建table表:
CREATE TABLE student (
stdno int(10) NOT NULL auto_increment, 
fname varchar(64), 
age int(16), 
PRIMARY KEY(childno)
);
INSERT INTO student(stdno,fname, age) VALUES ('1','EEE', 3);//插入一行

查找:

Select fname=‘EEE’ from student;

mysql> select fname='EEE' from stdren;
+-------------+
| fname='EEE' |
+-------------+
|           1 |
|           0 |
|           0 |
|           0 |
|           0 |
+-------------+
5 rows in set (0.00 sec)


7、 Linux下C语言sql 操作相关函数
1) Char* mysql_get_client_info()显示mysql客户端版本
2) MYSQL *mysql_init(MYSQL *mysql)
初始化一个MYSQL对象。若mysql为NULL,函数为其分配内存,初始化并返回一个新对象;返回一个被初始化了的MYSQL* handle,若内存不足返回NULL。
3) int mysql_options(MYSQL *mysql, enum mysql_option option, const void *arg)设置一些连接项。必须在mysql_init()之后,mysql_real_connect()之前调用该函数。
4) 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 long client_flag)
试图与运行在host上的mysql数据库建立一个连接。在调用该函数之前,必须先调用mysql_init()初始化MYSQL结构体。连接成功返回MYSQL* connection handle,连接失败返回NULL。


5) int mysql_query(MYSQL *mysql, const char *stmt_str)
   执行stmt_str指向的SQL语句。不能执行包含二进制的数据(字符“\0”是二进制数据),但mysql_real_query()可以;通常使用单独的SQL语句(不带“;”的),也可调用mysql_real_connect() 或mysql_set_server_option()指定以分号分隔的多个SQL语句。返回:SQL语句执行成功返回0,出错返回非0。
6) int mysql_real_query(MYSQL *mysql, const char *stmt_str, unsigned long length)其中length是字符串stmt_str的字节数。除能执行二进制的SQL语句外,其他与mysql_query()相同。
7) MYSQL_RES *mysql_use_result(MYSQL *mysql)在调用mysql_query()或mysql_real_query()之后,必须调用mysql_store_result()或mysql_use_result()才能产生一个结果集,在完成对结果集的处理之后,必须调用mysql_free_result()释放结果集。初始化一个结果集检索,但并不像mysql_store_result()那样把结果集读到client,而是通过调用mysql_fetch_row()进行逐行检索,直到返回一个NULL,直接从server读取,节省时间和空间。返回:成功返回一个MYSQL_RES结构体,出错返回NULL。
8) MYSQL_RES *mysql_store_result(MYSQL *mysql)与mysql_use_result()相同
9) int mysql_next_result(MYSQL *mysql)该函数用来在由多个SQL语句构成的单独语句字符串时执行。在每次调用该函数之前,一定要使用 mysql_free_result()释放当前的语句的结果集。
10) MYSQL_ROW mysql_fetch_row(MYSQL_RES *result) 检索结果集中的下一行,使用完mysql_store_result()后,无要检索的行返回NULL。使用完mysql_use_result()后,无要检索的行或出错返回NULL。 每行的值的个数可由mysql_num_fields(result)获知,如果row保存mysql_fetch_row()的返回值,则指向值的指针是row[0] to row[mysql_num_fields(result)-1],空值由NULL指向。返回值:成功返回下一行的MYSQL_ROW structure,出错或没有要检索的行返回NULL
11) void mysql_close(MYSQL *mysql) 关闭先前打开的连接,同时也释放由mysql指向的连接handle,若handle是由mysql_init() or mysql_connect()分配的


8、 写测试程序demo.c
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
int main(int argc, char *argv[])
{
MYSQL sql_connection;
int ret;
mysql_init(&sql_connection);
if(mysql_real_connect(&sql_connection, "localhost","root","password","base",0,NULL,0)){
printf("connect ok !\n");
ret = mysql_query(&sql_connection,"INSERT INTO student(stdno,fname, age) VALUES ('5','EEE', 3)");
if(!ret){
printf("Inserted %lu rows\n", (unsigned long)mysql_affected_rows(&sql_connection));
    } else {
            printf("Insert error %d: %s\n", mysql_errno(&sql_connection), mysql_error(&sql_connection));
    }
mysql_close(&sql_connection);


}else{
printf("Connection failed\n");
        if (mysql_error(&sql_connection)) {
            printf("Connection error %d: %s\n", mysql_errno(&sql_connection), mysql_error(&sql_connection));
}
}
return 0;
}
编译:
gcc -I/usr/include/mysql demo.c -L/usr/lib/mysql -lmysqlclient -o demo
0 0
原创粉丝点击