码迷,mamicode.com
首页 > 数据库 > 详细

从.net到java系列之jdbc

时间:2015-06-16 19:03:41      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

需要学习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;
    }

 

从.net到java系列之jdbc

标签:

原文地址:http://www.cnblogs.com/falcon-fei/p/4581341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!