小技巧:用批处理对MySQL进行数据操作数据库教程

2024-05-01

小技巧:用批处理对MySQL进行数据操作数据库教程(共7篇)

篇1:小技巧:用批处理对MySQL进行数据操作数据库教程

file 1

my.c

//--------------------------------------------------------

// MySQL Database Create 1/13/2001. Netkiller Chen

//--------------------------------------------------------

#include

#include

main()

{

char host[16]; //mysql host address.

char sid[15]; //root user name.

char pwd[15]; //root password.

/* char *table_file[]={

“gsxx”,

“bcxx”,

“fgxx”,

“hmbxx”,

“ltxx”,

NULL

};*/

//char *mysql;

char mydatabase[256];

char mysqltable[256];

int i;

int max_table_num;

int db,status;

i=0;

max_table_num=4; //max_table_num

system(“clear”);

showme();printf(“ ”);

printf(“MySQL host:”);scanf(“%s”,host);

printf(“Root user:”);scanf(“%s”,sid);

printf(“Password:”);scanf(“%s”,pwd);

printf(“Loading........ ”);

while(table_file[i]){

sprintf(mydatabase,“echo ”create database %s“|mysql -h%s -u%s -p%s”,table_file[i],host,sid,pwd);

sprintf(mysqltable,“mysql -h%s -u%s -p%s %s<%s.sql”,host,sid,pwd,table_file[i],table_file[i]);

db=system(mydatabase);

status=system(mysqltable);

// printf(“%s %s”,mydatabase,mysqltable);

printf(table_file[i]);

//printf(“%d”,status);

if(db==0 && status==0){

printf(“ Install [ OK ] ”);

}else{

printf(“ Install [ :( ] ”);

}

i++;

}

address();

}

//------------------- Function ------------------

showme()

{

printf(“------------------------------------------------------------------- ”);

printf(“ I am Netkiller Chen. ”);

printf(“ I am a programmer and system&net manager. ”);

printf(“ I am glad to be friend with you! ”);

printf(“------------------------------------------------------------------- ”);

}

address()

{

printf(“ ---------------------------------- ”);

printf(“| newtech@sina.com | ”);

printf(“| OICQ:13721218 | ”);

printf(“| 1/13/2001 | ”);

printf(“---------------------------------- ”);

}

file 2

table.h

char *table_file[]={

“alxx”,

“bcxx”,

“fycx”,

“fyxwxx”,

“fyzxxx”,

“hwzx”,

“lhzxxx”,

“xxdexx”,

“xxdsxx”,

“xxfgxx”,

“xxglxx”,

“xxgsxx”,

“xxhmbxx”,

“xxhtxx”,

“xxjbxx”,

“xxltxx”,

“xxzwxx”,

“xxzx”,

NULL

};

些程序可以方便建表,

用gcc批量建mysql库表数据库教程

。。有什么不明白与我联系。

程序随算不上什么。。。。。但也解决了一些批量建表的问提。

这个程序可以做为gcc刚入门爱好的参考,因为这个程序象hello world一样间简单。而且很全包括了指针,数组,文件包含,NULL

用户方法两个文件置于。/root/mygcc/下,将预建库mysql语句文件,文件名命名为xxxx.sql同上然后

#gcc my.c -o my

#my

即可。。。不用我在说了吧?

篇2:小技巧:用批处理对MySQL进行数据操作数据库教程

关键词:变形监测,方差分析,假设检验,精度估计

人类社会的进步和国民经济的发展,加快了工程建设的进程,并且对现代工程建筑的规模、造型和难度提出了更高的要求。与此同时,变形监测工作的意义变得更加重要。而变形监测成果质量的保证,除需要合理地设计变形监测方案外,更重要的是采用适当地变形分析方法。

通过变形监测网中所有监测点的多期复测资料,运用数理统计中方差分析的思路,提出了一种整体方差分析方法,用来同时估计各测点在各个观测周期的变形量及其精度,同时对变形量的显著性进行分析。

1 整体分析的数学模型

变形监测得到的是三维坐标数据,整体分析中讲三维坐标变形监测分解为三个一维变量变形监测,即对三个坐标参数分别进行分析。设有n个监测点,进行了m期观测,设在第i周期各监测点的观测值为(xi1,xi2,…,xin),监测点j在初始监测周期的观测值为x0j,监测点j各个监测周期的观测值为(x1j,x2j,···,xmj)。

根据以上定义,可以得到监测点ji周期相对于初始周期的坐标观测值之差

由此建立函数模型[1]:

式(2)中,ξ为各监测点不同时刻的平均变形量,视为常数;ηi为因为观测周期不同引起的在第i周期上的附加变形量,是一种系统效应,但在不同周期之间这种系统效应呈现随机性;γj为监测点j上的附加变形量,也是一种系统效应,但在不同的测点之间也呈现随机性;Δij为观测值的偶然误差。

式(2)右边的前三项记为监测点j在第i个观测周期上的总变形量

由此可见,观测值之差Δxij是总变形量与偶然误差之和。

根据定义,式(3)可以写成求和的形式

通过ξ的定义知道

将式(5)代入式(4)得到

由式(6)可知,mηinγi中有且只有m-1个ηin-1个γi是相互独立的。式(6)为系统效应ηiγj的约束条件。

式(3)的随机模型为

式(7)中,δx2ij为不同周期观测值之差的方差,设为正态变量;δη2,δγ2为ηi与γj的方差;δ2为观测值误差的方差。

2 变形量的最小二乘估计

根据最小二乘原理,由式(2)列出误差方程

方程总数为N=mn,独立参数的个数为m+n-1,则多余观测数即自由度为:

运用最小二乘法,分别对各个变形量求估值。首先求ξ^的估值,将VTV对ξ^取一阶偏导,并令导数等于零,得:

υij=ξ^+η^i+γ^j-xij代入得

Νξ^+niη^i+mjγ^j-ijΔxij=0(11)

考虑到约束条件iξi=0,jγj=0,可得到ξ^的最小二乘估值为

同理,可得到η^iγ^j的最小二乘估值:

根据上述推导,可以得到监测点j在第i个观测周期相对于初始周期的总变形估值为

3 系统效应的显著性检验

在得到监测点各个时期变形量的估值之后,还要对系统效应ηiγi进行显著性检验,以确定在观测过程中是否受到了系统效应的影响。

在这里,对系统效应ηiγi分别进行检验,即在考虑某一个系统效应的显著性时,另一个系统效应就被视为是不显著的,不在检验过程中予以考虑,这可以消除两个系统效应之间的相互影响。

3.1ηi的显著性检验

检验ηi的显著性时,要将γi视为不显著的,那么此时的误差方程变为

写成矩阵形式:

这里采用Koch K R.提出的线性假设法进行检验[2],故作原假设与备选假设为

H0:η1=η2=…=ηm=0; H1:ηi不全为零

根据间接平差原理,通过式(17)可以得到法方程为

将原假设写成矩阵形式作为线性假设条件加入到法方程中

加入了假设条件之后,误差方程中产生了自由度为(m-1)的附加离差平方和Rη[3]

Rη=Y^ΤBΤl-Y^ΤBΤA(AΤA)-1AΤl=ni(Δx¯i-Δx¯)2(20)

监测点剔除系统效应后的残差平方和为Ω,自由度为(m-1)(n-1):

利用F检验法,构成统计量

根据原假设与备选假设的内容,可以判断应该采用单尾检验的方法,因此拒绝域为

为了不轻易地拒绝原假设,保留形变中系统效应的影响,显著水平α应该取大一些,其分位值的大小可与正态分布中标准差的1.5倍相当。

3.2γj的显著性检验

在假设ηi效应不显著的前提下,列出误差条件方程

矩阵形式为:

设原假设与备选假设为:

H0:γ1=γ2=…=γm=0; H1:γj不全为零。

经过与ηi的检验过程相同的操作,最后得到自由度为(n-1)的附加离差平方和Rγ

检验统计量Fγ

拒绝域为

4 变形量估值的精度估计

无论采取何种平差方法,单位权方差的估值都是残差平方和除以平差问题的自由度(多余观测数)[4]

4.1 系统效应方差δ^2ηδ^2γ的估计

在前文中提到,在ηi效应显著的情况下,系统会产生附加的离差平方和,单位权的附加离差平方和为

这个单位权的附加离差平方和应该等于ηi平均效应的方差加上单位权方差:

式(31)中δ^η¯2=nδ^η2,所以式(30)可写为

整理后得到δ^η2效应方差的估值

同理,在γj效应显著的情况下有附加离差平方和

δ^γ2效应方差的估值为:

4.2 总变形量方差δ^ξ^ij的估值

由式(15)可以得到

所以总变形量ξ^ij的方差估值为

5 结束语

经过这种整体方差的分析,可以列出每一站在每个观测周期的型变量的表格(表1)。

通过这些数据,利用时间序列分析方法,根据观测数据之间的自相关性可以建立相应的数学模型,以此来描述形变的动态特征。也可以将表格绘制为曲线,对曲线进行拟合,做出预报曲线来对物体的形变进行进一步的分析。

参考文献

[1]陶本藻.GPS变形监测的整体方差分析.地矿测绘,2001;(1):6—8

[2] Koch K R.Parameterschmtzung und Hypothessntests in Linearen Mo-deIIen.DHMMLER.BONN.1980:239—247

[3]陶本藻.测量数据统计分析.北京:测绘出版社,1992:68—74

篇3:小技巧:用批处理对MySQL进行数据操作数据库教程

一桶牛奶可以在甲车间用12h加工3kg ,或者在乙车间用8h加工4kg 。假定能全部售出,且每千克 获利24元,每千克 获利16元,现在加工厂每天能得到50桶牛奶,正式工人总劳动时间为480h,甲车间的设备每天至多能加工100kg ,乙车间的设备的加工能力足够大。请制定生产计划使获利最大,并讨论:

若用35元可以买1桶牛奶,是否作这项投资?若投资,每天最多买多少桶牛奶?

若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元?

若每千克 的获利增加到30元,是否应改变生产计划?

二、问题分析

该优化的目标是使每天的获利最大,要作的决策是生产计划,决策受牛奶供应、劳动时间、甲车间生产能力的限制。将决策变量、目标函数、和约束条件用数学符号及式子表示出来,就得到了这个问题的优化模型。

三、优化模型

1.决策变量

设每天用X1桶牛奶生产A1,用X2桶牛奶生产A2。

2.目标函数

设每天获利为Z(元),X1桶牛奶生产3X1(kg)A1,获利24×3X1,X2桶牛奶生产4X2(kg)A2,获利16×4X2故Z=72X1+64X2。

3.约束条件

(1)牛奶供应:X1+X2≤50(桶);

(2)劳动时间:12X1-8X2≤480(h);

(3)设备能力:3X1≤100;

(4)非负约束:X1,X2≥0。

4.优化模型

Max Z=72X1+64X2 (1)

S.t.X1+X2≤50(2)

12X1+8X2=480 (3)

3X1≤100(4)

X1,X2 ≥0 (5)

四、模型分析与假设

1.该实际问题的优化模型的性质

(1)比例性:决策变量对目标函数的贡献,与该决策变量的取值成正比;决策变量对约束条件右端项的贡献,与该决策变量的取值成正比。

(2)可加性:决策变量对目标函数的贡献,与其它决策变量的取值无关;决策变量对约束条件右端项的贡献,与其它决策变量的取值无关。

(3)连续性:决策变量的取值是连续的。

2.假设

(1)A1、A2奶制品单位获利是与各自产量无关的常数,每桶牛奶加工出 、 的数量和所需时间是与产量无关的常数;

(2)A1、A2每千克的获利是与相互间产量无关的常数,每桶牛奶加工出 、 的数量和所需的时间是与相互间产量无关的常数;

(3)加工A1、A2的牛奶可以是任意正实数。

五、模型求解

将约束条件(2)~(5)中的不等号改为等号,在X1~X2平面上作五条直线,即L1:X1+X2=50,L2:12X2+8X2=480,L3:3X1=100 L4:X1=0,L5:X2=0。这五条上的线段围成五边形OABCD(如图1),顶点的坐标为O(0,0),A(0,50),B(20,30),C(100/3,10),D(100/3,0)。

目标函数(1)中z取不同数值时,可以作一组平行直线,即等值线族,当其向右上方移动到过B点时,z达到最大值3360,B点的坐标(20,30)为最优解,即X1=20,X2=30。

六、灵敏度分析

1.利用LINDO/LINGO软件对该问题进行敏感性分析

在LINDO/LINGO模型窗口中输入模型:

max72x1+64x2

st

milk)x1+x2<50

time)12x1+8x2<480

shop)3x1<100

end

则在报告窗口(ReportsWindow)中输出如下结果:

LPOPTIMUMFOUNDATSTEP 2

OBJECTIVEFUNCTIONVALUE

(1)3360.000

VARIABLE VALUEREDUCEDCOST

X1 20.000000 0.000000

X2 30.000000 0.000000

ROWSLACK OR SURPLUS DUAL PRICES

MILK)0.000000 48.000000

TIME)0.0000002.000000

SHOP) 40.0000000.000000

NO.ITERATION=2

RANGESINWHICHTHEBASISUNCHANGED

OBJ COEFFICIENT RANGES

VARIABLE CURRENTALLOWABLE ALLOWABLE

COEFINCREASE DECREASE

X1 72.000000 24.0000008.000000

X2 64.0000008.000000 16.000000

RIGHTHAND SIDE RANGES

ROWCURRENT ALLOWABLE ALLOWABLE

RHSINCREASEDECREASE

MILK 50.000000 10.0000006.666667

TIME 480.00000053.00000080.000000

SHOP 100.000000INFINITY 40.000000

2.答案

(1)若用35元可以买1桶牛奶,应作这项投资;若投资,每天最多增加10桶牛奶。

(2)付给临时工人的工资低于劳动时间的影子价格才能增加利润,故工资最多是2元/h。

(3)若每千克A1的获利增加到30元,则X1的系数变为

30×3=90在允许范围内,所以不应改变生产计划,此时最优解为90×20+64×30=3720。

七、模型推广及应用

这是一个二维优化模型,可以推广到n维的情况。此外,它可以广泛地应用于企业生产计划的诸多方面。

(作者单位:张守平,湖北职业技术学院应用技术分院;

篇4:小技巧:用批处理对MySQL进行数据操作数据库教程

1 My SQL数据库系统

SQL数据库具有速度快、健壮、支持多用户使用以及操作性强等特点, 并具有通过客户机/为各种操服务器结构的形式为操作系统提供关系数据库系统的功能, 是一种公布形式的数据库管理形式。若干不同的库和客户端以及一个服务器守护程序My SQLd构成了My SQL的基本组成结构, 多个应用程序都可以通过它得到编程接口, 也因此使各种将客户端应用程序的开发变得更为便利。

由服务器管理的数据库和表以层次结构方式存放在Datadir中, Windows文件系统和UNIX操作系统的树形结构都可以将这种层次结构表示出来: (1) 数据库中的表格与数据库中的目录中的文件相对应, 并能够在数据库目录下形成格式描述文件, 即FRM, 数据文件.MYO和索引文件。这三个文件都用来存放数据库中的每一个表格。 (2) 每个数据库目录下的一个目录与这个数据库相对应并以数据库名存放在Datadir之下。

2 My SQL安全机制

由于数据库中可能会存在于个人、企业甚至是国家至关重要的数据信息, 所以数据库的安全性也就变得至关重要, 并在社会中受到越来越多的关注。与大多数数据库开发商一样, My SQL数据库的开发商也在不断改善数据库的安全性, 其安全机制因而也得到了极大的改善与提高。在目前国内外有关My SQL数据库安全性的文献中, 都提到其主要保护措施是密码保护, 即在登陆数据库时需要提供口令。设置权限系统的访问控制的初衷是为了只允许通过认证的用户进行访问, 从而提高数据库的安全性。而在My SQL数据库中, 正是通过事先设置的权限表来控制访问数据库的客户机。

2.1 访问控制

My SQL的安全机制较为简单但也十分有效, 经过认证的有权访问的用户在经My SQL数据库管理员的允许可以对数据库中的记录进行查询, 这就是My SQL数据库的安全性职责。这种形式的保护既包括内部保护也包括外部保护。

2.2 My SQL内部安全机制

My SQL的内部安全机制中最需要考虑的问题是要考虑到文件系统的级别, 这也正是其中最主要的一个问题。运用这一安全机制可以有效防止具有运行My SQL服务器权限的用户供给My SQL的数据目录。然而, 要是My SQL数据库管理人员并不严格按照要求对My SQL数据目录中的文件进行授权的话, 就会导致这些文件之间的嘴硬出现简单的替换。一旦出现此类情况, My SQL内部的安全机制就无法再为客户的授权提供正确控制的保证。

因而, 在用操作系统的权限对文件系统进行权限设置的过程中, 需要严格按照规定要求, 并要由特定的My SQL管理小组对My SQL用户进行专门的管理, 从而保证每个数据目录都仅有一名用户有权对它进行访问。

2.3 My SQL外部安全机制

设置My SQL授权表可以阻止客户对My SQL服务器的攻击, 并保证只有合法的系统用户才具有数据库中数据的访问权限的机制, 被称为My SQL外部安全机制。

在My SQL的数据库授权表中, 具有user, db, tables priv, hosty以及solumns priv等多种形式的表格。当My SQL系统首次进行安装时, 这些授权表格就会进行初始化过程。而在通过网络而链接到此My SQL服务器的所有客户机都将有权限通过对这些授权表格的控制而访问My SQL数据库。

在user表格中, 清晰地列明了有权访问此服务器的用户及其相对应的密码, 并对这些用户的权限做出了清楚的说明。User表格中的权限属于全局权限, 并在整个数据库汇总都具有其作用。

db表格对所有的数据库以及每个数据库的有权访问用户都做了说明, 而db表格中的权限适用于数据库中的所有的表。

host表在使用时往往与db表格进行联合, 在更高的级别上管理和控制特定客户机的访问权限, 它使用时较为自由, 不会受到GRANT以及REVOKE或其他形式的语句的影响。

tables prive表具有制定数据库中表的权限的功能, 其中制定的权限使用于整个表中的任何列。

Columns prive表则对数据库中的每一列的权限进行指定。其中制定的权限只对该表中的某一列适用。

此外, 授权表的列具有确定用户权限的权限列和确定某权限有效时间的范围的两种类型, 对于表和数据的权限主要有以下几种, 包括可以用ALTER TABLE语句, 即ALTER;可以删除数据库和表, 但是无法对索引进行删除, 即DROP;能够进行数据库和表的创建但不能进行索引建立, 即REATE;既能创建也可以删除索引, 即INDEX;可以对表中的现有记录进行删除, 即DELETE;能通过SELECT语句最表中数据进行查询, 即SELECT;可以更改已有记录, 即UPDATE。管理权限则主要包括SHUTDOWN、FILE、GRANT、RELOAD等, 即可以通过My SQLadmin shutdown将服务器关闭;能够读写服务器主机上的文件;可以将自己拥有的权限分给别人使用;可以对服务器的管理命令进行执行。

在对My SQL服务器进行访问时, 其访问过程可以划分为两个阶段。客户机与服务器进行连接是第一个阶段。服务器对授权表中的user表进行查询, 寻找符合要求的数据项, 即能够与当前用户名及其所提供的密码相一致, 如果找不到符合这个要求的对象连接失败, 如若找到, 便可以与服务器建立成功的连接, 并由此进入到第二个阶段。在第二阶段中, My SQL服务器会通过授权表格对客户机发出的命令请求进行审核, 由此确定次用户是否有权限进行命令请求的执行, 直至服务器与客户机的连接断开, 这种核对才会结束。

2.4 数据库的维护与数据库的修复

My SQL数据库中对表的检查和维护的过程主要有以下四个步骤:

一是对发生错误的表进行检查。在对表的检查过程中如果顺利通过的话, 任务就成功完成, 相反, 如果不能通过, 那么就必须采取措施对出错的表进行修复。

二是在修复出错表之前对表进行拷贝, 备份储存, 以防止数据的丢失。

三是对出错的表进行修复工作。

四是如果无法对表进行成功的修复, 就需要采用更新的日志文件和备份的数据库对表进行进一步修复。

当数据库进行了数据备份和日志更新有效的前提下才能采取以上四个步骤来对数据库进行修复。在这两个条件都不具备的情况下, My SQL数据库系统就会面临很大的风险。

2.5 数据库备份与数据库恢复

目前, 主要有两种常见方式可以对数据库进行备份。一种是可以对数据库文件进行直接的拷贝备份, 虽然这种方式不需要My SQL系统的支持作为基础, 但是它有个前提保证, 就是在进行备份的过程中不能出现其他用户对被备份的数据进行修改的情况。另一种则是通过My SQL dump程序进行数据的备份, 这种方法需要在与My SQL服务器共同运行的前提下才能采用。而在备份数据的过程中也需要注意五方面的事项。一是要定期进行数据的备份。二是在备份时要执行更新日记。这样一来, 尽管我们使用的是通过备份文件进行还原的数据库数据, 但也可以通过执行更新日记的查询对瘫痪深刻的数据库中的表的状态进行查询。这是因为数据库备份文件在文件系统的备份语言中表示完全转储, 而更新日志则只表示增量转储。三是要对更新日志进行备份, 这是为了在My SQL服务器中包含数据库备份的磁盘驱动器也受到损坏的情况下可以采取补救措施。四是应该在不同的文件系统中存放备份的文件和数据库, 这样可以降低声称的备份文件填满含有数据字典的文件系统的可能性。五是要注意对就日志文件进行保存的数量和日志文件循环的频率要根据为保持旧日志所提供的磁盘空间的大小和服务器的工作状况决定。

在My SQL服务器中的数据库都完全毁坏的情况下, 我们要尽快对数据库进行补救和恢复工作。备份文件和更新日志都是属于这一过程。通过对文件进行备份, 对表进行恢复并将其恢复到其该备份时候的状态。而当备份进展到发生故障的时段时, 其对表进行修改的结果也会随之丢失。但是我们依旧可以依据更新日志的内容对数据库表进行修改的所有结果进行查询, 并利用更新日志将My SQL的输入进行重新的查询。

3 利用ODBC API实现My SQL数据库功能调用

开放式数据库互联, 即我们常说的ODBC (Open Database Connectivity) , 它是Windows开放性结构的重要组成部分之一, 并对数据库制造商提供的驱动程序有较强的依赖性。在对ODBC API进行使用的过程中, Windows的ODBC管理程序先寻找到正确的驱动程序, 再给该驱动程序进行访问请求的传递, 在接收到命令后, 该程序就会通过SQL语言对DBMS进行相关指示, 并使其完成数据库访问工作。在Windows下, 在安装ODBC数据库的前提下, 多种数据库都可以通过ODBC进行数据库连接以达到访问它们的数据的目的。

My SQL数据库制造商也为其提供了相应的ODBC驱动程序, myodbc-2.50.31-win95是它至今为止最新的版本。通过ODBC API, 在WIN98环境中它可以利用编程语言进行ODBC所支持的各项操作。即便是在各种数据库被ODBC屏蔽的情况下, 一些其他程序也可以通过ODBC进行对My SQL数据库的各项操作。可见, OBDC有助于提高程序对数据库的通用性。

4 利用My SQL自带的C API函数实现数据库功能调用

各个数据库间存在的差异导致它们提供的数据库的功能间也存在极大的差异。如此一来, 即便是通过ODBC API也无法使一个系统具备所有数据库都具有的数据库功能, 从而对程序对数据库的控制能力产生负面影响, 也使数据库的能力无法得到充分的发挥。且损失效能力是这种统一的接口的前提, 这都在一定程度上导致了数据库操作时间的延长。因而, 解决这些问题已是刻不容缓的事情。My SQL的制造商也认识到了解决这一问题的重要性, 数据库不仅提供ODBC驱动程序, 还提供各种编程环境下的API, CAPI也包括其中。实践证明, 这些API函数可以充分发挥数据库的能力, 从而减少数据库操作所需要的延长时间, 但是它却也带来了不良的影响, 即对程序的通用性造成了严重的影响。

一组函数和一组运用于函数的数据类型共同构成了My SQL数据库提供的一整套C API函数。C API函数可以在这些函数与My SQL服务器进行通信和数据访问的过程中对数据库进行直接操控, 从而有效地提高操控的效能。

行集、查询返回结果集、字段信息、数据库连接句柄、字段表的偏移量、自定义的无符号整型数等都是C API数据的类型, 即MYSQL ROW、MYSQL RES、MYSQL FIELD、MYSQ、MYSQL FIELD OFFSET、my ulonglong。另外, My SQL connect () 、My SQL init () 、My SQL close () 、My SQL query () 、My SQL store result () 等函数都是C API提供的函数, 其中My SQL query () 是最为重要的函数, 具有完成绝大部分数据库操控的作用。

摘要:数据库系统作为信息系统中的基础软件, 其安全性问题十分重要, 尤其是对于并发事件的控制和处理。该文通过对于MySQL数据库系统的详细作用功能阐述, 对其性能功能进行详细的研究后, 利用ODBC API和MySQL自带的C API函数来实现MySQL数据库功能调用, 使得其能够出现并发事件时, 能快速有效的进行数据库的数据控制和处理。

关键词:MySQL数据库,并发事件,数据控制

参考文献

[1]李荣国, 王见.MySQL数据库在自动测试系统中的应用[J].计算机应用, 2011 (31) :169-171.

[2]宋国柱, 陈俊杰.基于Mysql数据库的智能DNS系统的设计与实现[J].计算机工程与设计, 2009 (24) :5771-5773.

[3]邵志远, 金海, 唐晓辉.基于主动TCP连接复制的高性能高可用MySQL数据库集群[J].计算机研究与发展, 2005, 42 (6) :1006-1012.

篇5:小技巧:用批处理对MySQL进行数据操作数据库教程

关键词 Java 数据库 Mysql 数据库连接

一、java.sql类与其方法的理解

首先我们需要引用系统所提供创建语句和管理连接属性,建立与驱动程序的连接,在访问数据出问题时抛出和用于发送准备好的基本SQL语句的方法。由于系统有提供关于sql的方法,我们就可以直接拿来用,只需要去查看API中相应的介绍,API对于开发人员来说就相当于是一部学习的字典,当我们对某个方法和属性不太清楚或者不记得了,就可以来查阅API文档。如下引用的包。

import java.sql.Connection ;

import java.sql.DriverManager ;

import java.sql.SQLException ;

import java.sql.PreparedStatement ;

import java.io.File ;

import java.io.FileOutputStream ;

import java.sql.ResultSet ;

import java.io.InputStream ;

import java.io.InputStream ;

import java.io.OutputStream ;

而io这个包主要是对文件的输出输入流的方法。在这里我们主要用到引用的sql类包,有连接用的有驱动管理器,有对sql语句进行执行和一些数据容器类,这些数据容器可以来接受从数据库中获取的各种形式的数据,比如DataTable类和DataSet等

二、对Mysql数据库进行连接

对不同的数据库,所提供的驱动都是不一样的,对Mysql首先我们需要写一个公共类mysql,定义公共的静态字符串Driver ="org.gjt.mm.mysql.Driver";URL = "jdbc:mysql://localhost:端口号/mldn";User = "用户名";Pass = "密码"。然后就可以方便在主函数中写出连接的说sql语句和方法了。数据库参数一个为空的初始值,初始值的给予是为了给予内存资源,以下就一定要给出初始值。

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rs = null;

之后只需要写出你所要的sql语句比如字符串sql = "SELECT name,photo FROM ?(表) WHERE id=?";读取数据库地址用户名和密码Class.forName(Driver),连接字符串有三个参数分别是地址、用户名和密码conn=DriverManager.getConnection(URL,User,Pass);再调用它的方面来运行sql语句,conn.prepareStatement(sql)。

三、对数据库中文件进行处理

执行SQl语句进行查询就要调用方面executeQuery() ;如果数据库中一直存在这里写一个判断语句if(rs.next()),获取字符串用getstring();这里可以简单的用System.out.println("用户名:" + name)来检测正确。当然我们还可以写的复杂一点,把文件读取出或者存入数据库中,首先定义一个文件类File f = new File("C:" + File.separator + "名字.gif"),这里是一个图片文件,再定义输出流OutputStream out = null,out = new FileOutputStream(f) ;如果一直有数据,不为空就边读边写出来while((temp=input.read())!=-1),out.write(temp)。最后关闭输入输出close()。并且关闭数据库连接,对数据进行操作后,需要关闭数据库,释放内存空间。

参考文献:

[1]郑瑛.JDBC与数据库应用程序的开发[J].内蒙古民族大学学报(自然科学版), 2004(02).

[2]张作宸.JDBC原理及操纵数据库方法[J].科技信息, 2009(02).

[3]赵丽敏.浅谈JAVA连接数据库[J].科协论坛(下半月) , 2008(01).

[4]陈卫荣.浅谈Java的数据库接口JDBC[J].宁德师专学报(自然科学版), 2002(04).

篇6:小技巧:用批处理对MySQL进行数据操作数据库教程

关键词:JDBC,MySQL数据库,Java语言

一、引言

众所周知, Java语言具有很强的安全性, 支持跨平台、面向对象和适用于网络等技术特点, 特别是对网络具有良好的支持效果, 所以Java语言在网络开发方面得到了迅速的广泛应用, Java语言是当前对网络技术支持最全面、与网络关系最密切的一种面向对象的计算机语言。而我们在应用网络时更离不开数据库的支持, 对数据库的操作在任何语言中都占据很重要的位置, 也可以说如果没有数据库的存在就没有计算机语言的应用对像, 对于Java语言也是如此。目前, 市面上的主流关系型数据库服务器主要有, 微软公司开发的SQLServer数据库、甲骨文公司开发的My SQL数据库和Oracle数据库等, 在用Java编程语言对SQL Server数据库进行连接的过程中, 往往需要比较烦琐的系统环境配置, 所以当选择Java语言开发项目的时候, 在数据库服务器的选择配备方面, 多数时候会使用My SQL数据库或Oracle数据库。其中, 中小型企业的项目开发一般会选择使用My SQL数据库, 在大型企业开发较复杂的项目时, 大多会选用Oracle数据库[1]。

二、什么是 JDBC 技术

JDBC ( Java Data Base Connectivity, java数据库连接) 是一种用于执行SQL语句的Java API, 可以为多种关系数据库提供统一访问, 它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API, 据此可以构建更高级的工具和接口, 使数据库开发人员能够用纯Java API编写数据库应用程序[2]。

有了JDBC技术后, 再向各种关系数据发送SQL语句就是一件很容易的事。换而言之, 使用了JDBC API, 就不必为访问Sybase数据库专门写一个程序, 为访问Oracle数据库再专门写一个程序, 或为访问SQLServer数据库又要编写另一个程序等等, 程序员只要用JDBC API写一个程序就足够了, 它可经向相应的数据库发送SQL调用。同时, 将Java语言和JDBC结合起来后, 使程序员不必再为不同的平台去编写不同的应用程序, 只需编写一遍程序就可让它在任何平台上执行, 这也是Java语言“编写一次, 处处运行”非常显著的优势。

而作为Java API, JDBC为程序开发提供标准的接口, 并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准, 如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。而这种实现则称为JDBC的驱动程序 ( JDBC Driver) 。

JDBC的驱动程序可分为以下四个类型[3]:

第一种类型的驱动程序是基于JDBC - ODBC桥。因此ODBC驱动程序可以与此类JDBC驱动程序 ( 由Sun提供) 结合起来使用。IBM不支持种类型的驱动程序, 因此它不是推荐的环境。图1显示了JDBC - ODBC驱动程序的示例:

第二种类型的驱动程序依靠特定于操作系统的库 ( 共享库) 来与RDBMS通信。应用程序将装入这种JDBC驱动程序, 而驱动程序将使用共享库来与DB2服务器通信。通用JDBC驱动程序在文件db2jcc. jar中提供。可以使用JDBC第二类驱动 程序来支 持JDBC应用程序。WebSphere Application Server同时支持这两种驱动程序。图2显示了使用JDBC第二类驱动程序的应用程序的典型拓扑结构。

第三种类型的驱动程序是一种纯Java实现, 它必须与DB2 JDBC Applet服务器 ( DB2 JDBC Applet Server) 通信才能访问DB2数据。此类驱动程序旨在使Java applet能访问DB2数据源。在图3所显示的方案中, 应用程序与安装有DB2客户机另一台机器进行通信。

第三类驱动程序要求db2java. zip驱动程序总是处于与DB2 Applet服务器相同的维护级别。如果驱动程序在applet内使用, 这就不是一个问题, 因为浏览器会在应用程序执行期间下载相应的db2java. zip文件。将来的版本也不会对第三类驱动程序进行增强。我们鼓励使用通用JDBC第四类驱动程序来替代第三类驱动程序。

第四类JDBC驱动程序是仅用于Java的JDBC驱动程序, 它直接连接到数据库服务器。通用JDBC驱动程序在文件db2jcc. jar中提供。通用JDBC驱动程序是一种与驱动程序类型连通性或目标平台无关的抽象JDBC处理器。通用JDBC驱动器是一种与体系结构无关的JDBC驱动程序, 用于进行分布式和本地DB2 UDB访问。因为通用JDBC驱动程序独立于任何特定JDBC驱动程序类型连通性或目标平台, 所以它在一个DB2 UDB驱动程序实例中同时支持所有Java连通性和基于JNI的连通性。该驱动程序可以用于独立Java应用程序或多层应用程序。图4中显示了Type 4 JDBC驱动程序实现。

总之, JDBC实现了三方面的功能:

1) 建立与数据库的连接;

2) 执行SQL声明;

3) 处理SQL执行结果。

三、安装和创建 My SQL 数据库

My SQL数据库是一种较流行的开源关系型数据库, 可以从http: / /www. mysql. com/downloads/免费下载。本文中所使用的My SQL版本为5. 6. 17, 运行此目录下的setup. exe应用程序来安装My SQL数据库, 安装路径可以自行选择, 如安装到D: javadevmysql。

创建数据库之前应首先启动My SQL服务器, 在开始菜单的安装目录中启动My SQL数据库, 这个时候需要输入安装时为root用户设置的密码。接下来在弹出的对话框中输入数据库创建命令创建数据库, 如下所示:

mysql > CREATE DATABASE test;

其中, test为新建数据库的名字, 我们要用这个库来进行对数据库的连接测试。

四、连接和测试数据库

首先要介绍My SQL的JDBC驱动程序的使用方法, 然后通过一个示例来讲述如何测试My SQL的JDBC连接性[4]。

下载并安装My SQL的JDBC驱动包。

要想使用JDBC访问My SQL数据库, 那么必须要先去下载JDBC驱动程序。常用的方法有: My SQL Connector/J。My SQL一般推荐使用My SQL Connector / J这个驱动程序, 可以在http: / /dev. mysql. com/downloads/connector/j/找到并下载。在本篇文章中, 使用Connector/J 5. 1这个版本。mysql - connector - java - 5. 1. 7 - bin. jar就是这个驱动程序的压缩包, 并且要将该jar文件配置到CLASSPATH环境变量中。

测试连接和操作案例。

本示例在My SQL数据库test上运行所生成的输出结果, 它使用My SQL Connector/J 5. 1驱动程序, 开发工具为jdk1. 6. 0_07。

1) 加载驱动程序信息: 使用Class. for Name ( ) 方法加载My SQL的JDBC驱动程序, 完成Class. for Name ( ″org.gjt. mm. mysql. Driver″) ; 本例中My SQL的驱动类型作为参数传递到方法里。

2) 与My SQL数据库建立连接: 通过Driver Manager类的get Connection方法可以建立连接。其语法格式为: Connection conn = Driver Manager. get Connection ( url, username, password) ;

url是指定要连接数据库的URL, My SQL数据库的url形式为jdbc: mysql: / /localhost: 3306 /test

username, password为数据库的用户名和密码。在本实例中username是root, 密码是root, 在与My SQL数据库的test库建立连接时这些都作为参数在程序运行时给出。

3) 完成本例驱动程序的载入和连接数据库后, 我们就可以对数据库进行具体操作, 用以测试JDBC的连通性。DBUtil. java载入提供商驱动程序的信息, 并创建用于连接数据库的URL。通过这种方式, 不需要对数据库的URL进行硬编码, 并将数据库的信息添加到程序片段如下:

通过此程序就可以查出student表中的所有数据, 如图5所示:

五、结束语

目前, 面向对象的Java语言已成为软件开发当中最常用的计算机语言之一, 许多Web应用开发中采用Oracle、Sybase、SQLServer、My SQL等作为后台的数据库, 而JDBC技术的出现, 为Java Web应用程序提供了访问数据库的用户接口, 软件开发人员可以方便快捷地在Java语言中调用SQL语言, 从而使Java语言的Web应用程序或Java applet客户端小应用程序, 可以实现对分布在网络上的各种关系数据库的访问。

参考文献

[1]雍俊海.Java程序设计[M].北京:清华大学出版社, 2004.

[2]JDBC 3.0 Specification.SunMicrosystem Inc, 2001.

[3]http://java.sun.com/docs/books/tutorial/jdbc.

篇7:小技巧:用批处理对MySQL进行数据操作数据库教程

关键词:数据采集平台,教学状况,一览表,统计表,课程结构

0 引言

现在,高职院校人才培养工作状态数据采集平台(以下简称“平台”)的建设和使用越来越受到各校管理人员的重视。但是,这个平台的一些表格十分庞大,如状态数据采集平台中的开设课表,有35个字段,通常有几千条记录;而平台中目前尚缺少一些可供使用的专门工具或程序模块,使平台中这个最为重要的表的数据应用很不方便。如我们要对某个专业的教学情况进行“剖析和诊断”,需要了解该专业的专业课教学情况、课程体系结构及教学改革进展情况,反映这些情况的信息在平台中都有,但由于表格过大,且表中这些教学数据是与班级、教师、教材等数据交织在一起的,使你很难看到教学情况的全貌;而提取专门的教学情况数据,对一些计算机应用技术不那么熟练的人来说,做起来可能较为费力。因此,这些费了很大劲做出来的数据就可能被“束之高阁”,难以发挥作用了。

为此,我们进行了专门的研究,探讨了几个较为简便易行的方法。

1 专业课授课情况一览表的制作

为了使所有使用者能方便地浏览看到专业课教学情况的信息,我们对状态数据采集平台中的开设课表进行了切割整理,使其变为几个能反映授课、教材、教学团队等单一情况的数据表。

1.1 制作全院专业课授课情况的数据表

主要步骤如下:

1.1.1 选取相关的字段

先将平台中的状态数据采集平台中的开设课表导出。对导出的表做一次完整的复制和粘贴,使表的结构全部显现出来。将表的表头部分删除,只保留一行列标题,且所有的列标题使用原来的名称。将表中与授课情况无关的字段删除,保留专业方向代码、专业方向名称、序号、课程代码、课程名称、课时数、实践比例、授课年级、授课地点、授课方式、考试方法、实验、实习、实训等14个字段。保留序号是为了日后在原表中查找方便。另外,为减少表的冗余,我们将实验、实习、实训项目及内容等三个字段的信息全部集中到“实践教学项目及主要内容”这一个字段中;然后删除实习、实训这两个字段。

1.1.2 删除非专业课的记录行。

目前我院各专业的课程基本分为两大类:基本素质课和职(专)业能力课。基本素质课在本表中不需要了解它,故我们将其删除。删除的方法很简单,将所有记录按课程代码的升序排序,因我院基本素质课的课程代码均以数字“9”为首,自然排在最后,选中这些记录行,点击“Delete”键即可。

1.1.3 使用高级筛选。

经过上述两步的处理,使表的数据量大为减少。但在所得的表中,仍有不少课程的记录可能不止一行,而我们要求一门课只要有一行记录就可以了。使用Excel的“高级筛选”命令可将多余的行删除。方法是,将课程代码字段暂时移动到与专业方向代码相临的位置,选择“高级筛选”命令,在对话框中将专业方向代码与课程代码字段所在的列作为列表区域,点击“选择不重复的记录”的复选框,再点击[确定]钮,即可完成筛选。之后,对表做一次复制、粘贴操作,可使表中被筛选掉的记录真正被物理删除掉。

1.1.4 排序。

将数据按“专业方向代码”的升序、“授课年级”(笔画)的升序和“课程代码”的升序进行排序。

将处理过的表以“A7-2_10_ZYK”为名另存,作为制作各专业授课情况一览表的源表备用。

1.2 制作各专业的专业课授课情况一览表

事先设计制作一个专业课授课情况一览表的空表格。

打开全院的专业课授课情况数据表“A7-2_10_ZYK”,点选“自动筛选”命令,再点击“专业方向名称”字段的选项小箭头,在下拉框中选择某一专业方向名称,即可将该专业方向的专业课程筛选出来。

将筛选出的数据复制到授课情况一览表的空表格中,将表格更名另存即可。这张表我们设计成用A4纸横幅打印,方便了使用和存档。

2 专业课教学情况相关数据统计表的制作

2.1 制作专业课开设结构情况统计表

专业授课情况一览表可以浏览查看各专业课程开设和教学情况的全貌,但对开设课程在结构方面的存在问题却不容易发现,为此,我们在表的右侧制作了一个课程结构的统计表,其样式见表1。

2.1.1 表中统计项的设立

我们在统计表中设立了4组12个统计项目,分别是:专业课的总门数及B类(理论+实践)、C类(纯实践)课门数,专业课总课时数及实践课时数和比例,各年级开设专业课时数和门数。

2.1.2 表中典型的统计公式

上述的统计项目所涉及到在一览表中的数据均为数值类型或选项式填写的文本类型数据,故很容易实现自动统计计算。现将其中很典型的两个公式列出:

(1)统计专业课中B类课门数的公式

该公式的含义是:统计课程代码和课程名称不为空,实践课时比例数大于0且小于100的课程门数。公式中的“*”是“逻辑与”的运算符。

(2)统计一年级专业课时数的公式=SUMIF(F4:F99,"一年级",D4:D99)

该公式的含义是:统计授课年级字段域中的“一年级”的课时数之和。

限于篇幅,其余公式不一一列出。

2.2 制作专业课教学和教改情况统计表

在课程结构统计表的下方,我们还制作了一个教学和教改情况的统计表,样式见表2。

2.2.1 表中统计项的设立

我们在这个统计表中也设立了4组12个统计项目,分别是:主要授课地点(3项),主要授课方式(3项),考试/考核主要方法(3项),实践教学项目及主要内容(3项)。

2.2.2 表中有关统计项的说明

在这4组统计项中,每组的第一列统计的数据是“沿用传统教学方法”的课程门数,第二列主要统计B类课中“进行职业化改革”的课程门数,第三列主要统计C类课的教学状况。从这些统计数据中,我们可以观察了解到某个专业的教学和教改进展情况。

2.2.3 表中的统计公式

在这4组统计项中,只有第一组(行)数据是选项式填写的文本类型数据可以实现自动统计,其余的目前只能用人工去做统计。现将表2第一组第一列的统计公式列出:

统计授课地点是“普通教室”或“其他”的课程门数的公式{=SUM((B4:B99<>"")*(C4:C99<>"")*((G4:G99="普通教室")+(G4:G99="其他")))}

该公式的含义是:统计课程代码和课程名称不为空,主要授课地点是“普通教室”或“其他”的课程门数。公式中的“+”是“逻辑或”的运算符。

3 专业课课程结构合理值的探讨

有了专业课开设结构的统计数据,还必须有专业课课程结构的合理值,这样,才能对某专业的课程开设结构情况去进行“诊断”,就好像判断人的血压一样,必须要有一个正常值作参照。

3.1 专业课学(课)时数的合理值

教育主管部门将高职教育三年学习的总学时数规定为2400~2600,将周学时定为20~24。我院也自行规定,理论教学的周学时一般不超过24,实践教学的周学时按20计。根据这些规定,我们这样计算学年的学时数:一、二年级按每学年理论教学30周、实践教学8周计,结果为880学时;而三年级按学年理论教学5周、实践教学33周计,结果为780学时。这样,计得三年总学时数为2540,由于每专业的课程中必修选修的思想素质课、文化素质课、科技类课、体育、军训、就业指导课等的学时数之和为640,故专业课的三年总学时合理值为1900。由于素质课中的实践学时为180左右,为保证总的实践课时比例不低于50%,专业课的实践学时数的合理值应为1100,并可计得专业课实践学时比例合理值为57.9%。由于素质课在一、二、三年级开设的学时数分别为440、180、20,这样可得一、二、三年级的专业课学时数合理值分别为440、700、760。上述的这些合理值均列在表1中。

3.2 专业课门数的合理值

姜大源教授等职业教育专家在进行了大量的项目和工作过程导向课程教学改革研究的基础上提出,高职的专业课的课程门数应在10~20之间。目前,我院绝大多数专业在开设的重要专业课之后,往往配套开设有“单独设置”的实习课,这样,会使专业课门数增加6~10门。考虑这些因素,我们将专业课总门数的合理值确定为28,其中,B、C类课的门数分别为17和11;而一、二、三年级的开设课程门数的合理值分别是9、12、7。见表1的相关行。

3.3“诊断”案例

表3是我院XXXX专业2010年的专业课教学情况的统计数据,与表1的“合理值”比较,可以得出这样一些“诊断”意见:(1)课程门数偏多,建议减少3门,这样有利于专业核心课的建设。(2)专业总学时数偏高,建议二、三年级分别减少40、120。(3)有9门课在一体化教室进行,这是好的现象。(4)有10门C类(纯实践)课,但只有4门在实践场所进行,应查找原因。

由此例看出,过去只能通过听课、听介绍、凭印象对专业教学进行评价,现在可以用“数据”说话了;过去只能提一些笼统的意见,现在可以根据“数据”提出指向性很明确的意见。文中的不妥之处,敬请各位指正。有对文中介绍的方法和统计表格感兴趣者,可通过邮箱与我们联系,互相交流学习。

参考文献

[1]约翰沃肯巴赫.Excel2003公式与函数应用宝典[M].北京:电子工业出版社,2004.

[2]王首义,许洪军.计算机应用技能教程[M].北京:中国铁道出版社,2006.

上一篇:杭州市企业实行综合计算工时工作制申请书下一篇:耳提面命成语经典造句