zoukankan      html  css  js  c++  java
  • 从.net到java系列之jdbc

    需要学习java,记录从。net到java的笔记。
     
    下载jar包
    首先针对于不同的数据库需要下载相应的jar包。类似于.net 中连接不同数据库的dll,只是.net直接在framework里面包含了,这个需要自己到对应的官网上下载。

    主要包:
    import com.mysql.jdbc.Connection;
    import com.mysql.jdbc.PreparedStatement;
     
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;

    数据库

    驱动类名

    URL格式

    Oracle

    oracle.jdbc.driver.OracleDriver

    jdbc:oracle:thin:@hostip:1521:dbname

    Sybase

    com.sybase.jdbc2.jdbc.SybDriver

    jdbc:sybase:Tds:hostip:4100/dbname

    Mysql

    com.mysql.jdbc.Driver

    jdbc:mysql://hostip:3306/dbname?useUnicode=true&characterEncoding=GBK

    SQLServer 2000

    com.microsoft.jdbc.sqlserver.SQLServerDriver

    jdbc:microsoft:sqlserver://hostip:1433;DatabaseName=dbname

    SQLServer 2005

    com.microsoft.sqlserver.jdbc.SQLServerDriver

    jdbc:sqlserver://hostip:1433;DatabaseName=dbname

    SQLServer 7.0

    net.sourceforge.jtds.jdbc.Driver

    jdbc:jtds:sqlserver://hostip:1433/dbname

    DB2

    com.ibm.db2.jcc.DB2Driver

    jdbc:db2://hostip:50000/dbname

    Informix

    com.informix.jdbc.IfxDriver

    jdbc:informix-sqli://hostip:port/dbname:informixserver=<dbservername>

     
     

    主要对象PreparedStatement (为了好记,可以当做command对象)
    boolean execute() 
    在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。
    ResultSet executeQuery() 
    在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。
    int executeUpdate() 
    在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如 INSERTUPDATE 或 DELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。

    防止sql注入
    pstmt.setString(1, "pf");  类似与param
    代码片段:
    public static int update() {
         Connection conn = getConn();
         int i = 0;
         String sql = "update user set username=? where userid=?";
         PreparedStatement pstmt;
         try {
             pstmt = (PreparedStatement) conn.prepareStatement(sql);
             pstmt.setString(1, "pf");
             pstmt.setString(2, "1");
             i = pstmt.executeUpdate();
             System.out.println("resutl: " + i);
             pstmt.close();
             conn.close();
         } catch (SQLException e) {
             e.printStackTrace();
         }
         return i;
     }

    返回数据集合

    与c#有个比较大的不同点,c#中ado.net里面关于数据操作的封装类,像dataset、datatable,这些在java中都没有与之对应的类。返回数据查询的结果只有ResultSet。

    因此,如果想返回结果数据结合需要自己实现。以下是实现示例:
     
    首先是实体类
    package testJDBC;
    
    public class userEntity {
        private String _userid;
        private String _userName;
        
        public String Userid(){
            return this._userid;
        }
        public void SetUserid(String NewValue){
            this._userid=NewValue;
        }
        
        public String UserName(){
            return this._userName;
    
        }
        public void SetUserName(String NewValue){
            this._userName=NewValue;
        }
    }


     

    然后是数据访问类中的具体实现
     
    public static ArrayList<userEntity> getUserList() {
            ArrayList<userEntity> userList = new ArrayList<userEntity>();
            Connection conn = getConn();
            String sql = "select * from user";
            PreparedStatement pstmt;
            try {
                pstmt = (PreparedStatement) conn.prepareStatement(sql);
                ResultSet rs = pstmt.executeQuery();
                int col = rs.getMetaData().getColumnCount();
    
                while (rs.next()) {
                    userEntity tmpUser = new userEntity();
                    tmpUser.SetUserid(rs.getString("userid"));
                    tmpUser.SetUserName(rs.getString("username"));
                    userList.add(tmpUser);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
            return userList;
        }
  • 相关阅读:
    团队作业开发过程
    UVM基础之--------uvm_root
    UVM基础之------uvm_transaction
    UVM基础之----uvm_object
    UVM挑战及概述
    定制UVM Messages(参考)
    SV creation order
    IC验证概念总结
    win7 硬盘安装suse双系统启动顺序更改
    suse 下的gcc安装
  • 原文地址:https://www.cnblogs.com/falcon-fei/p/4581341.html
Copyright © 2011-2022 走看看