从.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;
驱动名称等:http://www.cnblogs.com/kunpengit/archive/2011/12/13/2285933.html
数据库 | 驱动类名 | 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() 在此 |
ResultSet | executeQuery() 在此 |
int | executeUpdate() 在此 |
防止sql注入
pstmt.setString(1, "pf"); 类似与param
代码片段:
public static int update() {
Connection conn = getConn();
int i = 0;
String sql = "update user set username=? where user;
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; }