接口和JDBC

问题

  1. linux如何实现在凌晨一点备份指定文件夹的所有信息
  2. oracle如何对数据进行分页显示

 

画程序内存结构

test.java

 

class  Swap{

   int  a;

   static int b;

}

class  Test{

static  void  swap(Swap a,Swap b){

}

public static void main(String …args){

    Swap a=new Swap();

a.a=10;a.b=20;

Swap b=new Swap();

b.a=20;b.b=40;

swap(a,b);

System.out.println(a.a+a.b+b.a);

}

}

 

栈区

swap.b   0x02

swap.a   0x01

 

main.a   0x01 

main.b   0x02

静态区

Swap.b  0->20->40    

 

 New Swap()   0x01

   A  0->10

   New swap()   0x02

A  0->20

 

 

 

 

运行结果(                        

 

class Test {

   static void swap(Swap a, Swap b) {

   }

 

   static void swap(int a,int b){

      int c=a;

      a=b;

      b=c;

   }

  

   public static void main(String... args) {

      Swap a = new Swap();

      a.a = 10;

      a.b = 20;

      Swap b = new Swap();

      b.a = 20;

      b.b = 40;

      swap(a.a, b.b);

System.out.println(a.a);

      System.out.println(a.a + a.b + b.a);

   }

}

class Swap {

   int a;

   static int b;

}

 

栈区

swap c   10

swap.b   40->10

swap.a   10->40

 

main.a   0x01 

main.b   0x02

静态区

Swap.b  0->20->40    

 

 New Swap()   0x01

   A  0->10

   New swap()   0x02

A  0->20

 

 

 

 

运行结果(            

class Swap {

   int a;

   int b;

}

class Test {

   static void swap(Swap a, Swap b) {

      Swap c=a;       a=b;         b=c;

   }

   static void swap(int a,int b){

      int c=a;        a=b;         b=c;

   } 

   public static void main(String... args) {

      Swap a = new Swap();

      a.a = 10;           a.b = 30;

      Swap b = new Swap();

      b.a = 20;          b.b = 40;

      swap(a,b);

      System.out.println(a.a + a.b + b.a);

   }

}

 

栈区

Swap c   0x01

Swap.b   0x02->0x01

Swap.a   0x01->0x02

Main.a   0x01 

Main.b   0x02

静态区

 

 

 New Swap()   0x01

   A  0->10

   B  0->30

 New swap()   0x02

A  0->20

   B  0->40

 

 

 

运行结果(            

 

 

class Swap {

   int a;

   int b;

}

class Test {

   static void swap(Swap a, Swap b) {

      Swap c=a

      a.a=b.a;    

      b.a=c.b;

   }

   static void swap(int a,int b){

      int c=a;        a=b;         b=c;

   } 

   public static void main(String... args) {

      Swap a = new Swap();

      a.a = 10;           a.b = 30;

      Swap b = new Swap();

      b.a = 40;          b.b = 80;

      swap(a,b);

      System.out.println(a.a + a.b + b.a);

   }

}

栈区

Swap c   0x01

Swap.b   0x02

Swap.a   0x01

Main.a   0x01 

Main.b   0x02

静态区

 

 

 

 New Swap()   0x01

   A  0->10->40

   B  0->30

 New swap()   0x02

A  0->40->30

   B  0->80

 

 

 

 

 

运行结果(            

 

 

linux怎么制作tar包?

 tar  -cvf   file.tar    要打包的文件

 

function  class   object   package   jar

 

java怎么制作jar包? jar   -cvf   file.jar   要打包的类及相关资源

找到之前包含你写的函数的那个类

package   com.yk.util;

public  class  YkUtil{

public  int  sumOfArray(int a[]){

   int s=0;

 

   return s;

public static boolean  isNumStr(String str){

    if( str==null || str.length()==0) return false;

 

    return true;

}

public int  count(String str,char ch){

    int cnt=0;

 

 

    return cnt;

}

public static boolean  isFloatStr(String str){

   return true;

}

 

}

命令行切换到bin路径

jar  -cvf   yk1.0.jar     com\yk\util\YkUtil.class

dir

 

 

怎么使用第三方的jar

转到eclipse,创建java project:testjar,

选中工程testjar、右键属性---找到java buildpath----library----点击添加jar—找到你刚才创建的jar包文件

 

 

在src下创建java文件

test.java

class   testjar{

public static void main(String args[]){

   //调用你制作的jar包中两个函数,一个静态的,一个非静态的

   Yk补全能看到你jar包中的类  

}

}

 

 

课间:在你oracle数据库所在的电脑,搜索一个操作oracle数据库的jar文件:ojdbc*.jar

 

 

封装: 将数据及相关函数写到类中(定义类的过程)

多态:多态特指有多个实现不同的功能的同名函数

编译时多态: 函数重载overload 

       指一个类中有多个同名的函数(形参不一样),

 

  new  String补全,

 

运行时多态: 函数重写override

       父子类中有多个同名的函数(返回类型、形参完全一样)    

 

 

创建一个文件Oop.java

class Test {

  public static void main(String[] args) {

         ITest  test=null;

         test=new TestA();

         test.abc();  //运行时判断调用那个abc

         test=new TestB();

         test.abc(); //运行时判断调用那个abc

  }

}

interface ITest {

  // java对接口最初的定义:只能放常量和没有函数体的函数(抽象函数,类似c的函数声明)

  // jdk1.8 开始,允许接口中可以放有函数体的函数

  int i = 0; // 不赋值,看error

 

  void abc(); // 给一对大括号,看error

}

 

interface ITest2 {

 

}

 

class TestA extends Test implements ITest, ITest2 {

 

  @Override

  public void abc() {

     // TODO Auto-generated method stub

     System.out.println(TestA.class);

  }

 

}

 

class TestB implements ITest {

 

  @Override

  public void abc() {

     // TODO Auto-generated method stub

     System.out.println(TestB.class);

  }

 

}

运行结果(      )

 

 

 

 

interface ITest {

  // java对接口最初的定义:只能放常量和没有函数体的函数(抽象函数,类似c的函数声明)

  // jdk1.8 开始,允许接口中可以放有函数体的函数

  int i = 0; // 不赋值,看error

  void abc(); // 给一对大括号,看error

}

 

interface ITest2 {

}

 

class TestA extends Test implements ITest, ITest2 {

    TestA(){

    System.out.println(TestA.class);

    }

  @Override

  public void abc() { 

     System.out.println(TestA.class);

  }

}

 

class TestB implements ITest {

  @Override

  public void abc() {   

     System.out.println(TestB.class);

  }

}

 

class Test {

  Test(){

     System.out.println(Test.class);

  }   

  public static void main(String[] args) {

         ITest  test=null;

         test=new TestA();

//         test.abc();  //运行时判断调用那个abc

//         test=new TestB();

//         test.abc(); //运行时判断调用那个abc

  }

}

运行结果(            

class Test {

  Test(){

     System.out.println(Test.class);

  }   

  public static void main(String[] args) {

         ITest  test=null;

         test=new TestA();

         test.abc();  //运行时判断调用那个abc

         test=new TestB();

         test.abc(); //运行时判断调用那个abc

  }

}

运行结果(            

 

 

构造函数能否重载?

构造函数能否重写?

 

 

 java操作数据库

 

使用数据库的客户端程序(和数据库不在同一台电脑) ,必须知道数据库的ip、port、database name、user、pass才可以使用数据库

检查环境:

主机能ping通oracle所在的电脑

在oracle所在电脑,执行 netstat   -ano | find   “LISTEN”   查找Oracle在哪个端口侦听

在服务或文件夹中查找数据库的名字

 

 

 

 操作数据库的技术:JDBC(Java  DataBase   Connectivity)

 相关的定义在java.sql包

 

 

 

  

创建java工程  yksql,添加操作oracle数据库的jar包

class yksql {

  public static void main(String[] args) {

    

            // jdbc使用步骤

       // 第一步,加载驱动(操作数据接的代码)     Class.forName("oracle.jdbc.driver.OracleDriver");// 提示  ClassNotFoundException

    

  }

}

 

加异常处理机制

 

class yksql {

  public static void main(String[] args) {

    

     try {

       // jdbc使用步骤

       // 第一步,加载驱动(操作数据接的代码)

       Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException

     } catch (Exception e) {

       System.out.println(e.getMessage());

     }

  }

}

运行程序(不加jar包、加jar包)

class yksql {

  public static void main(String[] args) {

 

     try {

       // jdbc使用步骤

       // 第一步,加载驱动(操作数据库的代码)     Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException

       // 第二步:和数据库建立连接

       Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleip:1521:dbname", "user", "pass");

 

     } catch (Exception e) {

       System.out.println(e.getMessage());

     }

  }

}

运行不显示任何信息表示和数据库能建立连接

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.Statement;

 

class yksql {

  public static void main(String[] args) {

     try {

       // jdbc使用步骤

       // 第一步,加载驱动(操作数据库的代码)

       Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException

       // 第二步:和数据库建立连接

       Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleip:1521:dbname", "user", "pass");

             //第三步:创建执行sql语句的对象

         Statement stcon.createStatement();

         // 第四步:执行DDL/DML

         st.executeUpdate("create table test1(a int)");     

        

      

     } catch (Exception e) {

       System.out.println(e.getMessage());

     }

  }

}

运行两次

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.Statement;

 

class yksql {

  public static void main(String[] args) {

     try {

       // jdbc使用步骤

       // 第一步,加载驱动(操作数据库的代码)

       Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException

       // 第二步:和数据库建立连接

       Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleip:1521:dbname", "user", "pass");

       // 第三步:创建执行sql语句的对象

       Statement st = con.createStatement();

       // 第四步:执行DDL/DML

       String sql = null;

       byte bSql[] = new byte[200];

 

       while (true) {

         System.out.println(bSql);

         try {

 

         } catch (Exception e) {

            System.out.println(e.getMessage());

         }

       }

 

     } catch (Exception e) {

       System.out.println(e.getMessage());

     }

  }

}

运行程序后,通过任务管理器杀掉运行的进程

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.Statement;

 

class yksql {

  public static void main(String[] args) {

     try {

       // jdbc使用步骤

       // 第一步,加载驱动(操作数据库的代码)

       Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException

       // 第二步:和数据库建立连接

       Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleip:1521:dbname", "user", "pass");

       // 第三步:创建执行sql语句的对象

       Statement st = con.createStatement();

       // 第四步:执行DDL/DML

       String sql = null;

       byte bSql[] = new byte[200];

 

       while (true) {

         System.out.print("yksql>");

         int len=System.in.read(bSql);

         System.out.println(bSql[0]+bSql[1]);       

         try {

 

         } catch (Exception e) {

            System.out.println(e.getMessage());

         }

       }

 

     } catch (Exception e) {

       System.out.println(e.getMessage());

     }

  }

}

运行程序后直接回车,再输入a回车

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.Statement;

 

class yksql {

  public static void main(String[] args) {

     try {

       // jdbc使用步骤

       // 第一步,加载驱动(操作数据库的代码)

       Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException

       // 第二步:和数据库建立连接

       Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleip:1521:dbname", "user", "pass");

       // 第三步:创建执行sql语句的对象

       Statement st = con.createStatement();

       // 第四步:执行DDL/DML

       String sql = null;

       byte bSql[] = new byte[200];

 

       while (true) {

         System.out.print("yksql>");

         int len = System.in.read(bSql);

         if (len == 2)

            continue;

         sql = new String(bSql, 0, len - 2);

 

         if (sql.equals("quit") || sql.equals("exit")) {

            System.exit(0);

         }

 

         try {

 

            if (sql.contains("select")) {// 执行SELECT

 

            } else { // 执行DDLDMLinsertdeleteupdate

              st.executeUpdate(sql);

            }

 

         } catch (Exception e) {

            System.out.println(e.getMessage());

         }

       }

 

     } catch (Exception e) {

       System.out.println(e.getMessage());

     }

  }

}

运行程序:输入不包含select关键字的sql语句

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

 

class yksql {

  public static void main(String[] args) {

     try {

       // jdbc使用步骤

       // 第一步,加载驱动(操作数据库的代码)

       Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException

       // 第二步:和数据库建立连接

       Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleip:1521:dbname", "user", "pass");

       // 第三步:创建执行sql语句的对象

       Statement st = con.createStatement();

       // 第四步:执行DDL/DML

       String sql = null;

       byte bSql[] = new byte[200];

 

       while (true) {

         System.out.print("yksql>");

         int len = System.in.read(bSql);

         if (len == 2)

            continue;

         sql = new String(bSql, 0, len - 2);

 

         if (sql.equals("quit") || sql.equals("exit")) {

            System.exit(0);

         }

 

         try {

 

            if (sql.contains("select")) {// 执行SELECT

              ResultSet rs = st.executeQuery(sql);

              int fCnt = rs.getMetaData().getColumnCount();

              // 显示查询列名称

              for (int i = 1; i <=fCnt; i++) {

                System.out.print(rs.getMetaData().getColumnName(i)+"\t");

              }

              System.out.println();        

 

            } else { // 执行DDLDMLinsertdeleteupdate

              st.executeUpdate(sql);

            }

 

         } catch (Exception e) {

            System.out.println(e.getMessage());

         }

       }

 

     } catch (Exception e) {

       System.out.println(e.getMessage());

     }

  }

}

运行程序:输入select语句

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

 

class yksql {

  public static void main(String[] args) {

     try {

       // jdbc使用步骤

       // 第一步,加载驱动(操作数据库的代码)

       Class.forName("oracle.jdbc.driver.OracleDriver");// ClassNotFoundException

       // 第二步:和数据库建立连接

       Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracleip:1521:dbname", "user", "pass");

       // 第三步:创建执行sql语句的对象

       Statement st = con.createStatement();

       // 第四步:执行DDL/DML

       String sql = null;

       byte bSql[] = new byte[200];

 

       while (true) {

         System.out.print("yksql>");

         int len = System.in.read(bSql);

         if (len == 2)

            continue;

         sql = new String(bSql, 0, len - 2);

 

         if (sql.equals("quit") || sql.equals("exit")) {

            System.exit(0);

         }

 

         try {

 

            if (sql.contains("select")) {// 执行SELECT

              ResultSet rs = st.executeQuery(sql);

              int fCnt = rs.getMetaData().getColumnCount();

              // 显示查询列名称

              for (int i = 1; i <= fCnt; i++) {

                System.out.print(rs.getMetaData().getColumnName(i) + "\t");

              }

              System.out.println();

 

              // (通过游标)循环遍历结果集中每条数据

              while (rs.next()) {

               

                for (int i = 1; i <= fCnt; i++) {

                   System.out.print(rs.getString(i) + "\t");

                }

                System.out.println();

              }

 

            } else { // 执行DDLDMLinsertdeleteupdate

              st.executeUpdate(sql);

            }

 

         } catch (Exception e) {

            System.out.println(e.getMessage());

         }

       }

 

     } catch (Exception e) {

       System.out.println(e.getMessage());

     }

  }

}

转到bin路径,dir看类有没有,复制连接数据库的jar包到bin路径  java  -cp  ./ojdbc14.jar;.   yksql

 

yksql>创建一张表,有primary key,有default

yksql>增加一个日期字段

yksql>显示数据

yksql>增加数据

yksql>增加数据

yksql>删除一条数据

yksql>修改一条数据

 

实践:

怎么让程序能执行

  insert into tbl(fld1,fld2) select  f1,f2 from tbl2 这种格式sql语句

猜你喜欢

转载自blog.csdn.net/caststudy/article/details/84586941
今日推荐