JAVA连接数据库操作java.sql.Connection
·
- JDBC(Java DataBase Connectivitys是由sun microsystem提供的api)
java.sql包是java内置的包,其中包含了一系列用于与数据库进行通信的类和接口 使用方法: - ODBC(Open DataBase Connectivity,开放式数据库连接,是由microsoft公司提供的api):它负责来了解不同厂商和类型的DBMS,为各种不同的编程语言提供查插改删的功能。
import java.sql.*;
接口名称 | 说明 |
---|---|
connection | 连接对象,用于与数据库取得连接 |
import java.sql.connection;
连接mysql数据库具体操作
(如果有写好的.sql文件预先导入mysql中)
- 使用纯java驱动连接mysql数据库,加载驱动程序到java解释器中:
Class.forName("com.mysql.jdbc.Driver");
- 连接字符串格式(后面的参数视情况而定),getConnection来获得连接对象
private static String url = "jdbc:mysql://localhost:3306/bankmanagersystem?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf8";
Connection conn = DriverManager.getConnection(url, "username", "password");
实例:
public class DBConnection {
private static String url = "jdbc:mysql://localhost:3306/bankmanagersystem?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf8";
//private static String url = "jdbc:mysql://localhost:3306/bankmanagersystem";
public static Connection getDBC() throws SQLException, Exception {
Class.forName("com.mysql.jdbc.Driver");//Java DataBase Connectivitys是由sun microsystem提供的api
Connection conn = DriverManager.getConnection(url, "username", "password");
return conn;
}
}
连接mysql之后的应用
- Connection对象的createStatement方法来创建语句对象
Connection conn = null;
conn = DBConnection.getDBC();
- 执行SQL语句
情况1: 执行DELETE,UPDATE和INSERT之类的数据库操作语句(DML),没有数据返回
Statement st = null;
sta。executeUpdate("INSERT INTO userInfo VALUES('*','*') ");
情况2:执行SELECT这样的数据查询语句(DQL)
String sql = "select userNO from userInfo where userNO='" + userNO+ "' and password = '" + password + "'";
ResultSet rs = st.executeQuery(sql);
- 对数据库的操作全部结束之后,应当将所有已经打开的资源关闭,否则将会导致资源泄露
rs.close();//关闭ResultSet对象
sta.close();//关闭Statement对象
con.close();//关闭Connection对象
实例:
//查询个人帐户信息业务
public UserInfo selectUser(String userNO) throws SQLException {
ResultSet rs = null;
UserInfo userInfo = null;
String sql = "select * from userInfo where userNO = '" + userNO + "'";
try {
conn = DBConnection.getDBC();
st = conn.createStatement();
userInfo = new UserInfo();
rs = st.executeQuery(sql);
if (rs.next()) {
userInfo.setUserName(rs.getString("userName"));
userInfo.setUserNO(rs.getString("userNO"));
userInfo.setUserAge(rs.getInt("userAge"));
userInfo.setIdCard(rs.getString("idCard"));
userInfo.setTel(rs.getString("tel"));
userInfo.setCity(rs.getString("city"));
userInfo.setBalance(rs.getInt("balance"));
userInfo.setAddress(rs.getString("userAddress"));
userInfo.setUserSex(rs.getString("userSex"));
userInfo.setUserflag(rs.getInt("userflag"));
return userInfo;
}
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
rs.close();
st.close();
conn.close();
}
return null;
}
ps:还有预编译语言对象(PreparedStatement),用于多次执行相似的SQL语句。此对象对SQL语句预先编译,比Statement对象执行效率更高,执行sql语句的方法也是executeUpdate()和executeQuery(),可以说基本一样。
参考:百度文库
更多推荐
已为社区贡献3条内容
所有评论(0)