在main命令行输入三个参数到oracle 的 dept2表(自己建的 和dept一样(deptno,dname,loc)),插入到数据库中去。通过本例子,学习在java里调试sql的方法。
写完sql语句后,在下边把它打印出来,有错误时,把这句sql语句粘贴到sqlplus里去,会详细显示哪个位置出错了。因为myeclipse里是不会提示具体的错误位置的,如果sql语句比较长,错误难以被发现。
要注意的是sql的insert into 语句里的细节,如字符串的 'dname','loc'的单引号等。
变量的声明问题:一般要求声明在头上,那是为了在用该变量时容易找到它的声明之处。现在myeclipse能够提示了,有人认为什么时候用什么时候声明变量。但面试时,还是声明在头上的好。
1 package com.ayang.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.SQLException; 6 import java.sql.Statement; 7 8 public class TestDML2 { 9 10 11 public static void main(String[] args) {12 if(args.length!=3){13 //判断输入参数个数是否错误14 System.out.println("Parameter Error! Please Input Again!");15 System.exit(-1); //系统退出16 }17 18 int deptno = 0; //声明变量。在头上呢?还是啥时候用啥时候声明呢?面试时,声明在头上。19 20 try{21 deptno = Integer.parseInt(args[0]);22 }catch(NumberFormatException e){23 System.out.println("参数类型错误,请输入数字");24 System.exit(-1);25 26 }27 String dname = args[1];28 String loc = args[2];29 30 Connection conn = null;31 Statement stmt = null;32 33 try{34 //1、注册驱动35 //new oracle.jdbc.driver.OracleDriver();36 Class.forName("oracle.jdbc.driver.OracleDriver");37 //2、建立连接38 conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL","scott", "root");39 //3、创建语句40 stmt = conn.createStatement();41 String sql = "insert into dept2 values("+deptno+",'"+dname+"','"+loc+"')";42 System.out.println(sql); //打印出sql语句用来调试sql43 stmt.executeUpdate(sql);44 45 }catch (ClassNotFoundException e) {46 System.out.println("未正常加载jdbc驱动");47 e.printStackTrace();48 }catch(SQLException e){49 e.printStackTrace(); //log for java50 51 }finally{52 //6、释放资源53 try {54 if(stmt != null){55 stmt.close();56 stmt = null;57 }if(conn != null){58 conn.close();59 conn = null;60 }61 } catch (SQLException e) {62 e.printStackTrace();63 }64 65 66 }67 68 69 }70 71 }