JDBC连接数据库和基础CURD操作
第一步,也是最容易忘记的一步。
就是导入 JDBC 的jar包。
直接复制到lib 文件夹即可。
2、
我们一般是数据库驱动单独写一个class。在使用的时候实例化它。
直接上代码了
package cap.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DbConnect {
private static String driverName = "com.mysql.jdbc.Driver";
private static String userName = "root";
private static String userPwd = "coder";
//private static String dbName = "test";
public static Connection getDBconnection(){
String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8";
//这里的3306/后面接的test是数据库名!
try{
Class.forName(driverName);
Connection con=DriverManager.getConnection(url, userName, userPwd);
return con;
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void closeDB(Connection con,PreparedStatement pstm, ResultSet rs){
try{
if(rs!=null) rs.close();
if(pstm!=null) pstm.close();
if(con!=null) con.close();
}catch (SQLException e) {
e.printStackTrace();
}
}
}
主要的连接数据库的代码就是这些,一般都是大同小异。不过大型项目开发一般不建议直接定义用户名和密码,而是把用户名和密码存放在XML文件中,便于更改密码(避免更改密码后要重新编译文件)。
3、
这是JDBC的操作。
直接上代码看注释
package cap.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.mysql.jdbc.Statement;
import cap.db.DbConnect;
public class UserDAO {
protected static String INSERT_SQL="insert into account (id,userName,password) values (?,?,?)";
protected static String SELECT_SQL="select * from account";
Connection connection = null;
ResultSet rs = null;
PreparedStatement pStatement = null;
Statement sStatement ;
/*
* PreparedStatement和Statement是两种方法,一种是动态的,一种是静态的。带参数的时候推荐使用PreparedStatement,安全性高和性能好。
* 用法在下面都有体现
* */
public static void main(String[] args) {
UserDAO userDAO = new UserDAO(); //java的基础语法应该都知道。
//userDAO.insert();
userDAO.select();
}
public int insert() {
try {
connection = DbConnect.getDBconnection();
pStatement = connection.prepareStatement(INSERT_SQL);
pStatement.setInt(1,1);
pStatement.setString(2,"张三");
pStatement.setString(3,"123456");
return pStatement.executeUpdate(); //操作类的返回值为int,成功返回1
} catch (Exception e) {
// TODO: handle exception
}
finally {
DbConnect.closeDB(connection, pStatement, rs);
}
return 0;
}
public void select() {
try {
connection = DbConnect.getDBconnection();
sStatement = (Statement) connection.createStatement();
ResultSet rs = sStatement.executeQuery(SELECT_SQL);
while(rs.next()) {
System.out.println("id="+rs.getString("id")+" userName: "+rs.getString(2)+" password:"+rs.getString(3) );
//rs.getString("id")可以直接获取字段名。也可以用下角标,从1开始。
}
} catch (Exception e) {
// TODO: handle exception
System.out.println("查询异常");
e.printStackTrace(); //打印异常信息
}
finally {
DbConnect.closeDB(connection, pStatement, rs);
}
}
}