从.net到java系列之jdbc

本文介绍如何使用Java进行数据库连接,包括下载对应数据库的JAR包、配置驱动及使用PreparedStatement进行安全的数据操作。提供了针对多种数据库的连接示例,并展示了如何通过Java代码获取查询结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要学习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对象)

 

booleanexecute() 
在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。
ResultSetexecuteQuery() 
在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。
intexecuteUpdate() 
在此 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;
    }

 

转载于:https://www.cnblogs.com/falcon-fei/p/4581341.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值