相信明天会更好

Tomorrow will be better

往数据库中导入大量的数据时,tomcat的配置往往需要做一些变化,比如加大tomcat数据库连接数我用的版本是tomcat5.5.23:在tomcat配置文件server.xml中,和连接数有关的参数有:
maxThreads最大连接线程数
minSpareThreads最小空闲连接线程数用于提高系统处理性能
maxSpareThreads最大空闲线程连接数
addeptCount允许最大连接数应该大于等于maxThread
connetionTimeout:网络连接超时,单位是ms,其中0表示永不超时,通常可设置为30000毫秒。
使用Java程序从数据库中查询大量数据时出现异常:java heap  space
这是由于JVM可以调配使用的内存空间的设置太低,JVM在启动的时候会自动设置heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4,所以如果heap size设置偏小,除了会产生以上异常之外,程序的响应速度也会变慢。但是heap size最大不要超过可用物理内存的80%,设置如下:windows是在tomcat的安装路径下/bin/catalina.bat文件夹中加入set JAVA_OPTS=%JAVA_OPTS% -Xms400m -Xmx512m
如果要往数据库中导入大批量的excel数据也可以直接用SQL Server2005 提供的SSIS来快捷的导入到数据中。但是可能还要吧excel表转换成csv格式的。

阅读全文 »

数据库-事务

前几天修改了一个程序,因为原来的代码是要从数据库中取出刚刚插入的那条记录的pid值,所以为了防止在这期间又有新记录插进去使得取出来的值与希望的值不一致,所以贾导建议用事务来解决,现在整理一下事务的相关内容:
所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。在关系数据中,一个事务可以是一条SQL语句、一组SQL语句或者整个程序。
在SQL中定义事务的语句有三条: begin transaction    commit  rollback,一般以begin  transaction开始以commit或者rollback结束。
事务的四个特性:原子性、一致性、隔离性、持续性。

阅读全文 »

数据库中涉及空值的查询例如:select sno,cno from sc where  grade  is  null 这里不能用=代替。

集函数:count(distinct|all *)统计元组个数。count(列名)统计一列中值的个数。sum(列名)、avg(列名)、max(列名)min(列名)。example  select count(distinct sno) from sc

where与having的区别在于where是作用于基本表和视图的从中选择满足条件的元组,而having短语作用于组,从中选择满足条件的组

表的自身连接:select  first.cno  second.cpno  from  course  first,   course  second  where  first.cpno=second.cno。

视图是从一个或者几个基本表(或视图)导出的表,它是一个虚表。数据库值存放视图的定义,而不存放视图对应的数据,这些数据仍放在原来的基本表中,如果基本表的数据发生变化,从视图中查询出的 数据也会发生变化。视图一旦被定义也可以和基本表一样被查询、删除,还可以在视图的基础上再定义视图。

视图的建立:create view  视图名[列名]   as  <子查询> [with check option],子查询中可以是任意复杂的select语句,但是不能含有order  by和distinct。其中的with check option 表示对视图进行update、insert、delete时要保证满足视图定义中子查询的条件。

组成视图的属性列名或者全部指定或者全部省略没有第三种情况,若是省略则把子查询中的目标列作为视图的各个属性。但是有一些情况下是必须指定属性列的。a.某个目标列不是单纯的属性名,而是集函数或列表达式。b.多表连接是选出了几个同名的列作为视图的字段。c.需要在视图中为某个列启用新的更合适的名字。

阅读全文 »

  三类完整性约束:实体完整性、参照完整性、和用户定义完整性,前两个是关系模型必须满足的完整性约束条件,被称作关系的两个不变性。

  实体完整性规则:如果属性A是基本关系R的主属性,则属性A不能为空。

  实体完整性规则规定基本关系的所有主属性都不能去空值,而不仅是主码整体不能取空值。例如学生的选课关系:“选修(学号,课程号,成绩)”中学号、课程号都是主码,则学号和课程号两个属性值都不能为空。

参照完整规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K相对应,则对应R中每个元组在F上的值必须为:空或者是S中某个元组的主码值。
用户定义的完整性就是针对某一具体关系数据库的约束条件。他反应了某一具体应用所涉及的数据必须满足的语义要求。例如某个属性必须取唯一值、某个属性值之间应满足一定的函数关系。某个属性的取值范围在0-100之间等等。

阅读全文 »

因为做得项目中有这个需求,所以就逼着自己试了一会,在许师兄和张师兄的帮助下,终于编译通过了,收获不少啊,首先要确保有相应的api,这里我们用的是java excel的jxl.jar ,把这个包放在应用的lib文件夹下面,然后在处理页面中引用相应的类来为从excel数据表中读取数据做准备,剩下的就是代码实现了,其中关键的代码是
 filename=request.getParameter(”url”);
Workbook workbook=Workbook.getWorkbook(new File(filename));
Sheet sheet=workbook.getSheet(0);
int rows=sheet.getRows();
int columns=sheet.getColumns();
String [] content=new String [100];
for(int i=1;i {
for(int j=1;j {
Cell cell=sheet.getCell(j,i);
content[j]=cell.getContents();
}
}
接下来要实现的就是把导出来的数据插入到相应的表中,这里要有一个转换比如说在excel中用汉字实现的而在数据库中是用int型的数字实现的,所以这就要在插入之前先做一下转换,还有一个问题就是要插入的字段在该表中是另一个表的外键例如在excel中存的是一个人的工种名称,但是在这个人的基本信息表中工种名称是以外健形式存在的通过两个表join来获取工种名称,所以在插入之前要把读出的工种名称转换为工种的pid然后插入到数据库中。所有这些都实现了以后就可以使用insert来插入到数据库了。

阅读全文 »

前几天在做项目的时候遇到了在数据库中建立数据表,以前对这个很模糊,经过贾老师的讲解,现在明白了很多了。首先要确定与该模块相关的实体有哪些,分别为这些实体建立一个数据表,然后在确定这些实体之间有没有关系,如果有的话,而且关系不能用实体之间的传递来表示,那么就建立一个关系表,这样数据表的雏形就建好了。
接下来要做的就是处理数据表之间是一对一、一对多、还是多对多的关系,第一个好说,如果是第二种情况,那么我们可以把多的那个数据表的主键在一的数据表中设立相应的外键来实现一对多的情况。如果是第三种情况,那么我们要单独抽出一个数据表来存放 这两个表的主键来解决多对多的情况。

阅读全文 »