关于JDBC入门和一些见解

关于JDBC的一些理解和总结

JDBC连接数据库:

​ 刚开始学的时候经常忘记步骤,其实多了几次之后发现完全就是自己没有理解到原理。现在回头看还是挺有意思的。

分为以下几个步骤:

1.注册加载JDBC驱动,把Driver装进JVM

Class.forName("com.mysql.cj.jdbc.Driver");
Class.forName("com.mysql.jdbc.Driver");

com.mysql.jdbc.Driver 是 mysql-connector-java 5中的
com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6中的
在mysql5+的版本中都要加上cj 

2.建立连接

Connection conn = Drivermanager.getConnection(url,user,password);

url: mysql5 是只需要设置Unicode,Encoding和SSL; mysql5+版本则还需要设置serverTimezone的时区,必须设置为所在地区的

String url = "jdbc:mysql://localhost/boke?useUnicode=true&characterEncoding=utf-8&useSSL=false&useSSL=false&serverTimezone=GMT";

3.建立容器,实例化statement

Statement stmt = conn.createStatement();
PreparedStatement ps = conn.prepareStatement(sql);

我把这个视为执行所有操作的容器。

4.创立SQL语句,执行操作

String sql = "sql语句";
ResultSet res = stmt.executeQuery(sql);
//executeQuery()方法会把数据库响应的查询结果存放在ResultSet类对象中供我们使用。由于是封装好了的对象  所以在取值的时候需要对应index
while(res.next()){
   String parameter1 = res.getString(1);
   String parameter2 = res.getString(2);
   String parameter3 = res.getString(3);
   String parameter4 = res.getString(4);
   String parameter5 = res.getString(5);
    
   //打包
   User user = new User();
   user.setName(parameter1);
        。。。。。。。
}

总结

资源关闭

每次调用完成后记得关闭资源

public void close() throws SQLException {
		if (conn != null)
			conn.close();
		if (stmt != null)
			stmt.close();
		if (rs != null)
			rs.close();
	}

JDBC中,PreparedStatement相较于Statement有什么优点?

1)PreparedStatement可以使用预编译的sql,而Statment只能使用静态的sql

2)PreparedStatement可以使用sql缓存区,效率比Statment高

3)PreparedStatement可以有效防止sql注入,而Statment不能防止sql注入。

SQL注入问题:

​ 指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

以上为个人的一些见解,欢迎一起讨论。

发布了1 篇原创文章 · 获赞 1 · 访问量 84

猜你喜欢

转载自blog.csdn.net/weixin_43849468/article/details/104172076