• 从.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;
        }
  • 相关阅读:
    JavaWeb网站技术架构
    fullcalendar插件日程管理
    PuTTY/终端使用复制、粘贴
    JAVA PERSISTENCE API (JPA)
    mysql查询当天所有数据sql语句
    Sign http
    js在新页面中返回到上一页浏览的历史位置
    Android使用Activity用作弹出式对话框
    android listview局部刷新和模拟应用下载
    如何获取drawable目录下的图片绝对路径
  • 原文地址:https://www.cnblogs.com/falcon-fei/p/4581341.html
Copyright © 2020-2023  润新知