1、自定义异常:
①、如果是继承RuntimeException,则说明这个异常时可抓获不可抓的!
②、如果是继承Exception,则说明这个异常时必须抓的!
2、当HTML标签中<form>与<table>遇到一起时,应当<table>放置<form>里!
3、如果从网上download的页面作为使用页面时,在启动Server服务器然后再打开页面时,页面打开得很慢!为什么呢?
可能是该页面的链接链到绝对网址上拿东西了!
如果有这种链接呢?该怎么办呢?
①、在MyEclipse中ctrl + F 找HTTP 这个关键字,但是如果HTTP仅仅出现在<a>这个标签中呢?
②、用Dreamweaver打开--->删一部分,用视图看一部分,这样来回检查页面显示的快慢!
为什么要用Dreamweaver删改呢?因为用Dreamweaver可以很清晰观察起止位置,而用代码删,很容易出错!
4、在用MySQL涉及DB时,常将id设计成自动递增的,即auto_increment,而如果我们在增加过程中,用如下的语句:
String sql = "insert into category values (?, ? ,?, ?, ?, ?)" ;
pstmt = DB.getPStmt(conn, sql) ;
pstmt.setInt(1, -1) ; // 此字段是id,是自动递增字段!
pstmt.setString(2, c.getName()) ;
pstmt.setString(3, c.getDescr()) ;
pstmt.setInt(4, c.getPid()) ;
pstmt.setInt(5, c.isLeaf() ? 0 : 1) ;
pstmt.setInt(6, c.getGrade()) ;
pstmt.executeUpdate() ;
在
insert into category values (?, ? ,?, ?, ?, ?)的id是?
,而在pstmt.setInt(1, -1),也就是说首先将第一个字段设置成-1了!那在DB中auto_increment还起作用吗?(这里的作用是指将-1覆盖成1!)
SQL文件里的语句:
create table category
(
id int primary key auto_increment,
name varchar(255),
descr varchar(255),
pid int,
isleaf int , #0表示leaf 1 表示非leaf
grade int #代表级别, 从1开始
);
不会起作用了!不会覆盖!可是如果真的遇到这种情况呢?可以参看以下代码:
PreparedStatement pstmt = null ;
try {
conn = DB.getConn() ;
String sql = "" ;
if(c.getId() == -1){
sql = "insert into category values (null, ? ,?, ?, ?, ?)" ;
}else {
sql = "insert into category values (" + c.getId() + " , ?, ?, ?, ?, ?)" ;
}
pstmt = DB.getPStmt(conn, sql) ;
pstmt.setString(1, c.getName()) ;
pstmt.setString(2, c.getDescr()) ;
pstmt.setInt(3, c.getPid()) ;
pstmt.setInt(4, c.isLeaf() ? 0 : 1) ;
pstmt.setInt(5, c.getGrade()) ;
pstmt.executeUpdate() ;
虽然上面的方法不是很完美,但是还可以!