最近开始复习JAVASE,下面就看看一些之前忘记的点。
JDBC访问数据库是之前自己比较迷糊的,现在正好来复习一下。数据库连接首先要有一个JDBC驱动程序,还要有一个数据库,这里两者不属于JAVA的知识,不再介绍。就只是介绍JDBC编程。
JDBC编程有6步,分别是1.加载sql驱动,2.使用DriverManager获取数据库连接,3.使用Connecttion来创建一个Statement对象 Statement对象用来执行SQL语句,4.执行SQL语句,5.操作结果集,6.回收数据库资源。以上就是大部分JDBC编程的步骤,也可以看自己的情况减少自己的步骤。因为是复习,所以代码中的注释还是比较多的。这里就不再累述了。代码如下:
package JDBCtrain;
import java.sql.*;
public class demo1 {
public static void main(String[] args) throws Exception {
// 1.加载sql驱动
// 加载驱动,利用反射知识
Class.forName("com.mysql.jdbc.Driver");
try (
/*
* 2.使用DriverManager获取数据库连接 返回的conn代表着java程序和数据库的连接 这里要注意导入的包,
* 这里还是要注意root@localhost和root@'127.0.0.1'是两个不同用户。还有就是账户和密码的问题
* Access denied for user '123'@'localhost' (using password: YES) 就是密码出错
*/
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/javatrain", "123", "123456");
/*
* 3.使用Connecttion来创建一个Statement对象 Statement对象用来执行SQL语句
*/
Statement stmt = conn.createStatement();
/*
* 4.执行SQL语句
* Statement有三种执行SQL语句的方式
* (1)executeQuery(sql) 执行select语句,返回查询到的结果集
* (2)execute(sql) 可执行任何的SQL语句,返回一个boolean值
* 如果执行第一个结果是ResultSet,返回true,否则返回false
* (3)executeUpdate(sql)执行DML语句,返回一个整数(代表SQL语句影响的行数)
*/
ResultSet rs=stmt.executeQuery("select * from demo1");
)
/*
* java7的特性,可以使用try语句来自动关闭数据库的各种资源
*/
{
//5.操作结果集
/*
* ResultSet就是返回的结果集,get()是获得特定列的值 next是下一行
*/
while (rs.next())
{
System.out.println("姓名为:"+rs.getInt(1)+",密码为:"+rs.getInt(2)+"。");
}
}
}
}
下面就说一下代码中要注意的,因为数据库的不同,获取数据库连接时的代码不一定一样,这里我因为数据库密码的原因卡了好久(一定要记得自己数据库的密码),还有就是第六步,代码中没有写出来,其实是JAVA7的特性,允许try块中放置数据库资源,在结束时系统会自动回收数据库资源。这个也是企业中比较推荐的写法。还有就是第三步,一定要注意Statement没法防止SQL注入(常见的Cracker入侵方式,利用SQL语句的漏洞来入侵),登录中可以使用PreparedStatement。以上就是一个简单的例子。结束。