数据库入门之常用模板汇总
来源:互联网 发布:流程梳理,优化建议书 编辑:程序博客网 时间:2024/06/11 21:16
Oracle脚本案例
-- 01 创建表空间-- 注意表空间的路径 根据实际安装环境进行调整CREATE TABLESPACE ts_myscott01 LOGGING DATAFILE '/home/oracle/ts_myscott01.dbf' SIZE 10M EXTENT MANAGEMENT LOCAL;CREATE TABLESPACE ts_myscott02 LOGGING DATAFILE '/home/oracle/ts_myscott02.dbf' SIZE 20M EXTENT MANAGEMENT LOCAL;ALTER DATABASE DATAFILE '/home/oracle/ts_myscott01.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;ALTER DATABASE DATAFILE '/home/oracle/ts_myscott02.dbf' AUTOEXTEND ON NEXT 20M MAXSIZE UNLIMITED; commit;-- 02 创建方案 (创建用户)CREATE USER MYSCOTT PROFILE DEFAULT IDENTIFIED BY MYSCOTT DEFAULT TABLESPACE USERS ACCOUNT UNLOCK;-- 资源和登录权限GRANT RESOURCE TO MYSCOTT;GRANT create session TO MYSCOTT;-- 03 创建表 -- 创建部门表 并赋值CREATE TABLE MYSCOTT.DEPT( DEPTNO NUMBER(2) PRIMARY KEY, DNAME VARCHAR2(14) NOT NULL, LOC VARCHAR2(13))TABLESPACE ts_myscott01;INSERT INTO MYSCOTT.dept VALUES(10, 'ACCOUNTING', 'NEW YORK');INSERT INTO MYSCOTT.dept VALUES(20, 'RESEARCH', 'DALLAS');INSERT INTO MYSCOTT.dept VALUES(30, 'SALES', 'CHICAGO');INSERT INTO MYSCOTT.dept VALUES(40, 'OPERATIONS', 'BOSTON');commit;-- 创建员工表 并赋值CREATE TABLE MYSCOTT.EMP( EMPNO NUMBER(4) constraint emp_empno_pk PRIMARY KEY, ENAME VARCHAR2(10) constraint emp_ename_notnull NOT NULL, JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2) constraint emp_sal_check check (SAL>0), COMM NUMBER(7,2), DEPTNO NUMBER(2) constraint emp_deptno_fk references MYSCOTT.dept(deptno) )TABLESPACE ts_myscott01;--创建索引 在新的表空间上CREATE INDEX MYSCOTT.IX_CAtbAuditOperInfo_OT ON MYSCOTT.EMP(ENAME) TABLESPACE ts_myscott02;INSERT INTO MYSCOTT.EMP VALUES(7369, 'SMITH', 'CLERK', 7902, '17-12月-80', 800, NULL, 20);INSERT INTO MYSCOTT.EMP VALUES(7499, 'ALLEN', 'SALESMAN', 7698, '20-2月 -81', 1600, 300, 30);INSERT INTO MYSCOTT.EMP VALUES(7521, 'WARD', 'SALESMAN', 7698, '22-2月 -81', 1250, 500, 30);INSERT INTO MYSCOTT.EMP VALUES(7566, 'JONES', 'MANAGER', 7839, '02-4月 -81', 2975, NULL, 20);INSERT INTO MYSCOTT.EMP VALUES(7654, 'MARTIN', 'SALESMAN', 7698, '28-9月 -81', 1250, 1400, 30);INSERT INTO MYSCOTT.EMP VALUES(7698, 'BLAKE', 'MANAGER', 7839, '01-5月 -81', 2850, NULL, 30);INSERT INTO MYSCOTT.EMP VALUES(7782, 'CLARK', 'MANAGER', 7839, '09-6月 -81', 2450, NULL, 10);INSERT INTO MYSCOTT.EMP VALUES(7788, 'SCOTT', 'ANALYST', 7566, '19-4月 -87', 3000, NULL, 20);INSERT INTO MYSCOTT.EMP VALUES(7839, 'KING', 'PRESIDENT', NULL, '17-11月-81', 5000, NULL, 10);INSERT INTO MYSCOTT.EMP VALUES(7844, 'TURNER', 'SALESMAN', 7698, '08-9月 -81', 1500, 0, 30);INSERT INTO MYSCOTT.EMP VALUES(7876, 'ADAMS', 'CLERK', 7788, '23-5月 -87', 1100, NULL, 20);INSERT INTO MYSCOTT.EMP VALUES(7900, 'JAMES', 'CLERK', 7698, '03-12月-81', 950, NULL, 30);INSERT INTO MYSCOTT.EMP VALUES(7902, 'FORD', 'ANALYST', 7566, '03-12月-81', 3000, NULL, 20);INSERT INTO MYSCOTT.EMP VALUES(7934, 'MILLER', 'CLERK', 7782, '23-1月 -82', 1300, NULL, 10);commit;-- 创建工资级别表 并赋值CREATE TABLE MYSCOTT.SALGRADE( GRADE NUMBER, LOSAL NUMBER, HISAL NUMBER)TABLESPACE ts_myscott01;INSERT INTO MYSCOTT.SALGRADE VALUES(1, 700, 1200);INSERT INTO MYSCOTT.SALGRADE VALUES(2, 1201, 1400);INSERT INTO MYSCOTT.SALGRADE VALUES(3, 1401, 2000);INSERT INTO MYSCOTT.SALGRADE VALUES(4, 2001, 3000);INSERT INTO MYSCOTT.SALGRADE VALUES(5, 3001, 9999);commit;--创建奖金表CREATE TABLE MYSCOTT.BONUS( ENAME VARCHAR2(10), JOB VARCHAR2(9), SAL NUMBER, COMM NUMBER)TABLESPACE ts_myscott01;------停止------- 04创建新用户方案 通过MYSCOTTUSER1来访问数据库, 权限配置演示 CREATE USER "MYSCOTTUSER1" PROFILE "DEFAULT" IDENTIFIED BY "123456" DEFAULT TABLESPACE "USERS" ACCOUNT UNLOCK;GRANT "CONNECT" TO "MYSCOTTUSER1";GRANT SELECT ANY TABLE TO "MYSCOTTUSER1";GRANT DELETE ON MYSCOTT.DEPT TO "MYSCOTTUSER1";GRANT INSERT ON MYSCOTT.DEPT TO "MYSCOTTUSER1";GRANT UPDATE ON MYSCOTT.DEPT TO "MYSCOTTUSER1";GRANT DELETE ON MYSCOTT.EMP TO "MYSCOTTUSER1";GRANT INSERT ON MYSCOTT.EMP TO "MYSCOTTUSER1";GRANT UPDATE ON MYSCOTT.EMP TO "MYSCOTTUSER1";commit;
Oracle实现命令行工具
/* 包含C头文件 */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <setjmp.h> #include <sqlcpr.h> /* 包含SQLDA和SQLCA结构 */ #include <sqlda.h> #include <sqlca.h> /* 定义绑定变量和选择列表项的最大个数 */ #define MAX_ITEMS 40 /* 定义绑定变量和选择列表项名称的最大长度 */ #define MAX_VNAME_LEN 30 /* 定义指示变量名称的最大长度 */ #define MAX_INAME_LEN 30 void connect(); void sql_error(); void alloc_descriptors(int , int , int); void dealloc_descriptors(); void set_bind_variables(); void process_select_list(); /* 定义绑定描述区和选择描述区 */ SQLDA* bind_dp; SQLDA* select_dp; /* 定义输入宿主变量:存放动态SQL语句 */ char sql_stat[100]; char current_date[20]; int main() { /* 安装错误处理句柄 */ exec sql whenever sqlerror do sql_error(); /* 连接到数据库 */ connect2(); /* 分配绑定描述区和选择描述区 */ alloc_descriptors(MAX_ITEMS , MAX_VNAME_LEN , MAX_INAME_LEN); for( ; ; ) { printf("请输入动态SQL语句(exit:退出):"); gets(sql_stat); /* EXIT(exit):退出 */ if(0 == strncmp(sql_stat , "exit" , 4) || 0 == strncmp(sql_stat , "EXIT" , 4)) break; /* 准备动态SQL语句 */ exec sql prepare s from :sql_stat; /* 定义游标 */ exec sql declare c cursor for s; /* 出错,继续下一循环 */ if(0 != sqlca.sqlcode) continue; /* 设置绑定变量 */ set_bind_variables(); /* * 打开游标 * select语句:生成结果集 * 其他SQL语句:执行语句 */ exec sql open c using descriptor bind_dp; /* * select语句 */ if(0 == strncmp(sql_stat , "select" , 6) || 0 == strncmp(sql_stat , "SELECT" , 6)) { process_select_list(); } /* 关闭游标 */ exec sql close c; } /* 释放选择描述区和选择描述区 */ dealloc_descriptors(); /* 提交事务,断开连接 */ exec sql commit work release; puts("谢谢使用Oracle动态SQL方法四!\n"); return 0; } void connect2() { /* 定义宿主变量 */ char username[20] , password[20] , server[20]; /* 输入用户名、口令和网络服务名 */ printf("输入用户名:"); gets(username); printf("输入口令:"); gets(password); printf("输入网络服务名:"); gets(server); /* 连接到数据库 */ EXEC SQL CONNECT :username identified by :password using :server; } void sql_error() { /* 显示SQL错误信息 */ printf("%.*s\n" , sqlca.sqlerrm.sqlerrml , sqlca.sqlerrm.sqlerrmc); } void alloc_descriptors(int size , int max_vname_len , int max_iname_len) { int i; /* 分配绑定描述区和选择描述区 */ bind_dp = SQLSQLDAAlloc(0 , size , MAX_VNAME_LEN , MAX_INAME_LEN); select_dp = SQLSQLDAAlloc(0 , size , MAX_VNAME_LEN , MAX_INAME_LEN); /* 为指示变量、绑定变量和选择列表项分配内存 */ for(i = 0 ; i != MAX_ITEMS ; ++i) { bind_dp->I[i] = (short*)malloc(sizeof(short)); select_dp->I[i] = (short*)malloc(sizeof(short)); bind_dp->V[i] = (char*)malloc(1); select_dp->V[i] = (char*)malloc(1); } } void dealloc_descriptors() { int i; /* 释放指示变量、绑定变量和选择列表项占用的内存 */ for(i = 0 ; i != MAX_ITEMS ; ++i) { if(bind_dp->V[i] != (char*)0) free(bind_dp->V[i]); free(bind_dp->I[i]); if(select_dp->V[i] != (char*)0) free(select_dp->V[i]); free(select_dp->I[i]); } /* 释放绑定描述区和选择描述区 */ SQLSQLDAFree(0 , bind_dp); SQLSQLDAFree(0 , select_dp); } void set_bind_variables() { int i; char bind_var[64]; /* 设置绑定变量最大个数 */ bind_dp->N = MAX_ITEMS; /* 绑定变量名称: 绑定描述区 */ exec sql describe bind variables for s into bind_dp; /* 设置绑定变量实际个数 */ bind_dp->N = bind_dp->F; /* 循环处理绑定变量 */ for(i = 0 ; i != bind_dp->F ; ++i) { /* 显示绑定变量名 */ printf("请输入绑定变量%.*s的值:" , (int)bind_dp->C[i] , bind_dp->S[i]); /* 输入绑定变量的值 */ gets(bind_var); /* 设置绑定变量的长度成员 */ bind_dp->L[i] = strlen(bind_var); /* 为绑定变量数据缓冲区重新分配内存(多一位,留给'\0') */ bind_dp->V[i] = (char*)realloc(bind_dp->V[i] , bind_dp->L[i] + 1); /* 绑定变量数据: 数据缓冲区 */ strcpy(bind_dp->V[i] , bind_var); /* 设置指示变量,处理NULL */ if(0 == strncmp(bind_var , "NULL" , 4) || 0 == strncmp(bind_var , "null" , 4)) *bind_dp->I[i] = -1; else *bind_dp->I[i] = 0; /* 设置数据缓冲区数据类型代码->char */ bind_dp->T[i] = 1; } } void process_select_list() { int i , null_ok , precision , scale; char title[MAX_VNAME_LEN]; /* 设置选择列表项的最大个数 */ select_dp->N = MAX_ITEMS; /* 选择列表项: 选择描述区 */ exec sql describe select list for s into select_dp; /* 设置选择列表项的实际个数 */ select_dp->N = select_dp->F; /* 循环处理选择列表项 */ for(i = 0 ; i != select_dp->F ; ++i) { /* 清除select_dp->T[i]的高位->null */ SQLColumnNullCheck(0 , (unsigned short*)&select_dp->T[i] , (unsigned short*)&select_dp->T[i] , &null_ok); /* 根据内部数据类型确定外部类型数据长度(显示长度) */ switch(select_dp->T[i]) { case 2: /* number类型,取得精度与标度 */ //SQLNumberPrecV6(0 , (unsigned short*)&select_dp->T[i] , &precision , &scale); SQLNumberPrecV6(0 , (unsigned long *)&select_dp->L[i] , &precision , &scale); //wangbaoming modify 201409 if(scale > 0) /* 实数: 显示长度:float */ select_dp->L[i] = sizeof(float); else /* 整数: 显示长度 int */ select_dp->L[i] = sizeof(int); break; case 12: /* DATA数据类型(DD-MON-YY) */ select_dp->L[i] = 9; break; } /* 根据变量长度,重新为选择列表项数据缓冲区分配内存 */ if(2 != select_dp->T[i]) /* 其他类型 */ select_dp->V[i] = (char*)realloc(select_dp->V[i] , select_dp->L[i] + 1); else /* number类型 */ select_dp->V[i] = (char*)realloc(select_dp->V[i] , select_dp->L[i]); /* 初始化title */ memset(title , ' ' , MAX_VNAME_LEN); /* 选择列表项名称: title */ strncpy(title , select_dp->S[i] , select_dp->C[i]); /* 显示列名 */ if(2 == select_dp->T[i]) if(scale > 0) printf("\t%.*s" , select_dp->L[i] + 3, title); else printf("\t%.*s" , select_dp->L[i] , title); else printf("\t%-.*s" , select_dp->L[i] , title); /* 根据Oracle内部类型确定外部数据类型(显示类型) */ if( 2 == select_dp->T[i]) { /* number 类型*/ if(scale > 0) /* float */ select_dp->T[i] = 4; else /* int */ select_dp->T[i] = 3; } else /* char */ select_dp->T[i] = 1; } printf("\n"); /* 提取数据完毕->结束循环 */ exec sql whenever not found do break; /* 循环处理选择列表数据 */ for( ; ; ) { /* 数据->选择描述区 */ exec sql fetch c using descriptor select_dp; /* 显示数据 */ for( i = 0 ; i != select_dp->F ; ++i) { if(*select_dp->I[i] < 0){ /* 处理NULL */ printf("\tNULL"); }else{ if(3 == select_dp->T[i]){ /* int */ printf("\t%d" , *(int*)select_dp->V[i]); }else if(4 == select_dp->T[i]){ /* float */ printf("\t%8.2f" , *(float*)select_dp->V[i]); }else{ /* char */ printf("\t%.*s" , select_dp->L[i] , select_dp->V[i]); } } } printf("\n"); } }
MySQL脚本案例
-- 用root用户登录系统,执行脚本-- 创建数据库create database mydb61;-- 选择数据库use mydb61;-- 增加 dbuser1 用户-- 创建用户‘dbuser61’密码为 ‘dbuser61’拥有操作数据库mydb61的所有权限 GRANT ALL ON mydb61.* TO dbuser61 IDENTIFIED BY "dbuser61"; flush privileges;-- grant select,insert,update,delete on mydb61.* to dbuser61@localhost identified by "dbuser61";-- grant select,insert,update,delete on mydb61.* to dbuser61@'%' identified by "dbuser61";-- 创建表-- 创建部门表 并赋值DROP TABLE IF EXISTS `dept`;CREATE TABLE `dept`( `deptno` int(2) PRIMARY KEY, `dname` varchar(14) NOT NULL, `loc` varchar(13))DEFAULT CHARSET=utf8;INSERT INTO dept VALUES(10, 'ACCOUNTING', 'NEW YORK');INSERT INTO dept VALUES(20, 'RESEARCH', 'DALLAS');INSERT INTO dept VALUES(30, 'SALES', 'CHICAGO');INSERT INTO dept VALUES(40, 'OPERATIONS', 'BOSTON');commit;-- 注意mysql的sql语言 约束如果起名字,需要单独写在表后面-- 创建员工表 并赋值DROP TABLE IF EXISTS `emp`;CREATE TABLE `emp`( -- `empno` int(4) constraint emp_empno_pk PRIMARY KEY, `empno` int(4) PRIMARY KEY, `ename` varchar(10) NOT NULL, `job` varchar(9), `mgr` int(4), `hiredate` DATE, `sal` int , `comm` int, `deptno` int(2) , constraint emp_deptno_fk foreign key(deptno) references dept(deptno))DEFAULT CHARSET=utf8;--创建索引 -- CREATE INDEX MYSCOTT.IX_CAtbAuditOperInfo_OT ON MYSCOTT.EMP(ENAME) TABLESPACE ts_myscott2;create index emp_ename_index on emp(ename);--注意 日期格式不一样INSERT INTO emp VALUES(7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, NULL, 20);INSERT INTO emp VALUES(7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30);-- INSERT INTO emp(empno, ename, job, mgr, hiredate, sal, deptno) VALUES(7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 30);INSERT INTO emp VALUES(7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30); INSERT INTO emp VALUES(7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, NULL, 20);INSERT INTO emp VALUES(7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30);INSERT INTO emp VALUES(7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, NULL, 30);INSERT INTO emp VALUES(7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, NULL, 10);INSERT INTO emp VALUES(7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000, NULL, 20);INSERT INTO emp VALUES(7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000, NULL, 10);INSERT INTO emp VALUES(7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500, 0, 30);INSERT INTO emp VALUES(7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100, NULL, 20);INSERT INTO emp VALUES(7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, NULL, 30);INSERT INTO emp VALUES(7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, NULL, 20);INSERT INTO emp VALUES(7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, NULL, 10);commit;-- 创建工资级别表 并赋值DROP TABLE IF EXISTS `salgrade`;CREATE TABLE `salgrade`( `grade` int, `losal` int, `hisal` int)DEFAULT CHARSET=utf8;INSERT INTO salgrade VALUES(1, 700, 1200);INSERT INTO salgrade VALUES(2, 1201, 1400);INSERT INTO salgrade VALUES(3, 1401, 2000);INSERT INTO salgrade VALUES(4, 2001, 3000);INSERT INTO salgrade VALUES(5, 3001, 9999);commit;--创建奖金表DROP TABLE IF EXISTS `bonus`;CREATE TABLE bonus( `ename` VARCHAR(10), `job` VARCHAR(9), `sal` int, `comm` int)DEFAULT CHARSET=utf8;commit;
MySQL实现命令行工具
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <dlfcn.h>#include <mysql/mysql.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <errno.h>#include <termios.h>#include <mysql/mysql.h>#include <termios.h>struct termios oldterm;void setstty2()//设置输入退格键,不回显{ //system("stty erase ^H");//执行shell命令,也可以 用来设置读取用户键盘输入的时候,退格键不回显 struct termios term; if(tcgetattr(STDIN_FILENO, &term) == -1)//得到系统termion的设置 { printf("tcgetattr error is %s\n", strerror(errno)); return; } oldterm = term;//保留当前termios设置,以便程序退出的时候可以恢复termios /* term.c_lflag &= ~ICANON;//取消ICANON选项(不规范输入) term.c_lflag |= ICANON;//设置ICANON选项(规范输入) term.c_cc字段为要设置的具体特殊输入字符,如c_cc[VERASE]代表退格键, term.c_cc[VERASE] = '\b';意思为把退格键修改为'\b' VERASE代表向前擦出一个字符,VINTR代表发送ctrl + C中断信号,ctrl + c的ASCII码为3 例如:term.c_cc[VINTR] = '\t';意思为将tab键设置为终端信号 tcsetattr中,第二个参数说明,TCSAFLUSH:发送了所有输出后更改才生效,在更改发生时,未读取的所有输入数据都被删除 TCSANOW:更改立即生效 TCSADRAIN:发送了所有输出后更改才发生,如果更改输出参数则应该使用该选项 */ term.c_cc[VERASE] = '\b';//'\b'为退格键的ASCII码 if (tcsetattr(STDIN_FILENO, TCSANOW, &term) == -1)//设置系统termion { printf("tcsetattr error is %s\n", strerror(errno)); } return;}void setstty()//设置输入退格键,不回显{ system("stty erase ^H");//执行shell命令,也可以 用来设置读取用户键盘输入的时候,退格键不回显}void returnstty()//恢复系统的termios设置{ if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &oldterm) == -1)//设置系统termion { printf("tcsetattr error is %s\n", strerror(errno)); } return;}int main(int arg, char *args[]){ int ret = 0, i=0; MYSQL mysql; MYSQL *connect; MYSQL_RES *result; MYSQL_ROW row; MYSQL_FIELD *fields; unsigned int num_fields; if (arg < 4) { printf("please enter: %s localhost user password dbname\n", args[0]); return -1; } setstty();//设置输入退格键,不回显 mysql_init(&mysql); //连接到mysql server connect = mysql_real_connect(&mysql, args[1], args[2], args[3], args[4],0, 0, 0); if (connect == NULL) { printf("connect error, %s\n", mysql_error(&mysql)); return -1; } ret = mysql_query(connect, "SET NAMES utf8"); //设置字符集为UTF8 if (ret != 0) { printf("设置字符集错误, %s\n", mysql_error(&mysql)); return ret; } char buf[4096]; for( ; ; ) { memset(buf, 0, sizeof(buf)); //strcpy(buf, "mysql>"); //write(STDOUT_FILENO, buf, strlen(buf)); //memset(buf, 0, sizeof(buf)); //read(STDIN_FILENO, buf, sizeof(buf)); printf("\nmysql>"); gets(buf); /* EXIT(exit):退出 */ if ( 0 == strncmp(buf , "exit" , 4) || 0 == strncmp(buf , "EXIT" , 4) || 0 == strncmp(buf , "quit" , 4) || 0 == strncmp(buf , "QUIT" , 4) ) { break; } //printf("buf:%s \n", buf); ret = mysql_query(connect, buf); if (ret != 0 ) { printf("func mysql_query() err: %s", mysql_error(&mysql) ); continue; } else { //printf("ok\n"); } if ( (strncmp(buf, "select", 6) == 0) || (strncmp(buf, "SELECT", 6) == 0) || (strncmp(buf, "show", 4) == 0) || (strncmp(buf, "SHOW", 4) == 0) || (strncmp(buf, "desc", 4) == 0) || (strncmp(buf, "DESC", 4) == 0) ) { //获取查询结果 result = mysql_store_result(&mysql); //获取列表头信息信息 fields = mysql_fetch_fields(result); num_fields = mysql_num_fields(result); for (i=0; i<num_fields; i++) { printf("%s\t", fields[i].name); } printf("\n"); //按照行获取数据 检索结果集的下一行。 while(row = mysql_fetch_row(result)) { for (i=0; i<mysql_num_fields(result); i++) { printf("%s\t ",row[i]); } printf("\n"); } mysql_free_result(result); //free result after you get the result } else { //printf("")mysql_affected_rows(connect); } } mysql_close(connect); //断开与SQL server的连接 // returnstty();//恢复系统的termios设置 return 0;}
0 0
- 数据库入门之常用模板汇总
- WordPress模板常用函数汇总
- Android之Toast入门版【常用方法汇总】
- 数据库常用函数汇总
- 数据库开发常用汇总
- 数据库常用函数汇总
- 数据库常用语句汇总
- 常用数据库语句汇总
- Oracle数据库语法之【DDL】常用汇总-【更新】
- Oracle数据库语法之【DCL】常用汇总-【更新】
- Oracle数据库语法之【DML】常用汇总-【更新】
- SQLite数据库常用方法汇总
- MongoDB数据库常用指令汇总
- JavaSE入门之路汇总
- iOS之常用知识点汇总
- 前端之常用单词汇总
- STM32入门之模板建立
- MS-SQL数据库开发常用汇总
- 坑:删除ViewGroup中的一个已经得到焦点的EditText时,同级的第一个EditView会得到焦点
- c++小程序媛常用网站
- Python的hasattr() getattr() setattr() 函数使用方法详解
- XPath总结
- Redis数据库的dump备份与aof备份
- 数据库入门之常用模板汇总
- IE中使用Uploadify文件上传插件报错: SCRIPT5007: 缺少对象
- 史上最全的ReactNative视频
- 2017.1.10 算法测试题集 - 1002 - 相等二叉树
- 史上最大DDoS攻击的本质与防范
- 多线程-1、NSThread
- 时间处理的工具类
- Deep learning 的一点点笔记
- Multi-Class Classification Tutorial with the Keras Deep Learning Library