网上商城学习札记(三)

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() ;

虽然上面的方法不是很完美,但是还可以!

你可能感兴趣的:(sql,C++,c,SQL Server,Dreamweaver)