刚学java,想要连接MySQL和Linux的jdbc连接实例。我是新手,大家莫笑啊。

解决方案 »

  1.   

    呵呵, 我正好有。发给你吧,都是从不会开始的。楼主加油啊!!JDBC是java平台访问关系型数据库的数据库的唯一的通用的接口
    JDBC分为2层,一层是接口,一层是驱动(具体的实现)接口集他就是一个协议(合同).SUN公司是甲方,他定义了乙方(具体的数据库厂商)需要做的一些事情.
    调用者(java的程序员)和实现者(数据库驱动的程序员)之间的协议.1 链接数据库 2 向数据库发送sql命令 3 处理结果从结构上来说JDBC是一个接口集Driver 按照JDBC规范实现的一个组件(类库);
    四种驱动类型.
    1.JDBC-ODBC-Bridge Driver(ODBC是MS开发的通用的访问数据库的接口,ODBC是基于C语言的,可以把JDBC看做是ODBC的java版,)这个驱动是唯一SUN公司自己写的一个驱动.特点:效率不高,而且安全性不够.
    2.partly-Java-Native-Driver 部分java本地驱动:本身java是安全的,但是有一部分是不安全的,所以整体的安全性能就依赖于本地代码那一部分,所以java的安全性就完全没有了.
    3.Pure-Java-Net-Driver:虽然是纯java写的,安全方面的问题没有了,但是效率是很低的,
    4.Pure-Java-Native-Protocol-Driver.:纯java本地协议驱动java.sql包和javax.sqlDriver 是一个接口,他代表驱动程序.数据库厂商必须实现这个接口.
    DriverManager 是一个辅助管理驱动程序的类,
    Connection 代表数据库连接,Statement
    PreparedStatement
    CallableStatement    这三个是数据库操作对象.ResultSet 代表结果集DatabaseMetadata
    ResultSetMetada   这2个代表元数据Types 代表Jdbc类型,这个类里边只有静态常量环境和开发.
    环境 1.数据库服务器2.驱动包3.环境变量4.数据库连接信息oracle:thin:@192.192.168.0.23:1521:tarenajdbc:mysql://127.0.0.1:3306/testhttp://202.156.8.100:80/index.html
    =================================================
    public static void main(String[] args){
      Connection con = null;
      Statement stmt = null; 
      ResultSet rs = null;
      StringBuffer sb = new StringBuffer();
      try
      {
       //1. 加载驱动
      Class.forName("oracle.jdbc.driver.OracleDriver");
      //2. 连接数据库
          con = DriverManager.getConnection(
      "jdbc:oracle:thin:@192.168.0.23:1521:tarena","hzsd0702",
      "hzsd0702");
          //3. 获取数据库操作对象
          stmt = con.createStatement();
      //4. 操作数据库
      rs = stmt.executeQuery(
      "select id,name from t_user order by id");
      //5. 处理结果集
          while(rs.next()){
        sb.append("id="+rs.getString(1)+" name="+rs.getString(2)+"\n");
      }
      System.out.println(sb.toString());
      }
      catch ( Exception e)
      {
      e.printStackTrace();
      }finally{
          //6.关闭连接 
         try{
     if(rs!= null) rs.close();
             if(stmt!= null) stmt.close();
     if(con!= null) con.close();
         }catch (SQLException ex){
            ex.printStackTrace();
     }
      }
    =======================================
    Class.forName();把这个类加载到内存,并且调用了DriverManager的一个静态方法static void registerDriver(Driver driver),注册到DriverManager里边,DriverManager里边相当有个列表记录着注册的Driver,当你掉DriverManager的static Connection getConnection(String url, Properties info)  这个方法获得Connection的时候,DriverManager会遍历自己的那个列表,去那里找合适的Driver,然后调用Driver里边的一个Connection connect(String url, Properties info)  这个方法,获得这个Connection方法.
    ========================================
    DriverManager 的getConnection这个方法是一个代理方法.他会用到向他注册过的驱动,调用这些驱动对象来连接数据库,Driver会解析传过来的这个URL,通过他自己的connect方法.获得Connection对象.ResultSet
    游标是单向的,而且是只读的.
    rs.next(); 使游标向下移动一个位置,并且返回当前的那个游标所指的记录.rs.getString()
    rs.getDouble()
    通过相应类型的方法来取出来这里边的值,参数可以跟一个整数,代表第你要取第几个字段,或者里边跟上字段名,但是如果参数里边传的是字段名的话,这样会使效率降低.