對Java中變量作用域理解

    昨天寫一個java小程序測試與oracle數據庫的連接,小程序如下:

package com.test;
import java.sql.*;
public class procedure {
	public static void main(String[] args) {
		
		try {
	Class.forName("oracle.jdbc.driver.OracleDriver");				
	Connection ct=DriverManager.getConnection
	("jdbc:oracle:thin:@10.8.2.73:1521:orcl","scott","123456");	
			CallableStatement cs=ct.prepareCall("{call pro_book(?,?,?)}");
			cs.setInt(1, 10);
			cs.setString(2, "華爾街之狼");
			cs.setString(3, "中信出版社");
			cs.execute();	
			cs.close();
			ct.close();
		} 
		  
		catch (ClassNotFoundException e) {
			
			e.printStackTrace();
		} 
		catch (SQLException e) {
			
			e.printStackTrace();
		}
		
	}

}

    變量cs和ct在try{}之外就無法使用,當時就懵了,首先想到的就是超出作用域了,查過資料之後發現確實是超出作用域了,ct和cs的聲明都是在try{}裏面進行的,作用局就是在{}之內,把ct和cs的聲明放在try{}之外就可以使用了。總結:變量的作用域開始於“{”,結束於“}”。修改之後的代碼爲:

package com.test;
import java.sql.*;
public class procedure {
	public static void main(String[] args) {
		Connection ct=null;
		CallableStatement cs=null;
		try {
	Class.forName("oracle.jdbc.driver.OracleDriver");				
	ct=DriverManager.getConnection
	("jdbc:oracle:thin:@10.8.2.73:1521:orcl","scott","58764899");	
			cs=ct.prepareCall("{call pro_book(?,?,?)}");
			cs.setInt(1, 10);
			cs.setString(2, "華爾街之狼");
			cs.setString(3, "中信出版社");
			cs.execute();	
		} 
		  
		catch (ClassNotFoundException e) {
		
			e.printStackTrace();
		} 
		catch (SQLException e) {

			e.printStackTrace();
		}
		finally{
			
			try {
				cs.close();
				ct.close();
			} catch (SQLException e) {
				
				e.printStackTrace();
			}
		}
		
	}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章