在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语句用来调试sql
43         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 java
50             
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 }

 

欢迎关注个人公众号一起交流学习: