JDBC之入门使用步骤 解析
第一步:导入jar包(没有jdbc的jar是无法使用jdbc的)
第二步:注册驱动(可省略)
Class.forName("com.mysql.jdbc.Drive")
第三步:使用DriverManager 类的getConnection() 方法获取Connection 数据库连接对象
COnnection conn = DriverManager.getConnection(“jdbc:数据库名(mysql):\\ip地址:端口号,”“数据库的账户”,“数据库的密码”);
// Driver是驱动的意思。Manager是管理的意思。一起就是驱动管理的意思。所以DriverManager就是驱动管理类
第四步:写sql语句
//1.写DML/DDL语言
String str=“updata 表名 set 列名 = “。。。” where = 筛选条件”;
//2.写DQL语言
String str="select 查询列表 from 表名 where = 筛选条件 "
第五步:使用Connection类的createStatement()方法获取执行sql语句的Statement 对象
Statement state = conn.createStatement();
第六步:使用 Statement 或 PrepareStatement类 的 executeUpdate() 或 executeQuery() 方法执行sql语句execute是执行的意思。Update是修改的意思。Query是查询的意思
- 当sql是DML或DDL语言时:使用Statement类的executeUpdate()方法
int count = state.executeUpdate(sql);//传入sql语句。
【注意:如果是PreparedStatement对象是创建时传入sql】
- 这里的返回值是int类型。表示的是:修改表所影响的行数
- 当sql是DQL语言时:我就要使用Statement类executeQuery()方法
ResultSet res = state.executeQuery();
- 这里的返回值时一个结果集对象。
- 结果集对象有两成员方法:
- 1. public boolean next() 是个游标,用来判断该行是不是最后一行末尾,并向下移动一行。
- 2.public Xxx getXxx(“可写int类型第几列 或 直接写列名”):用来获取当前行某列的数据。
**第七步:**释放资源
调用close方法
下边演示一波完整的代码并加以分析
//提高作用域。
Connection conn = null;
Statement stmt = null;
ResultSet res = null;
try {
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.使用DriverManager 驱动管理类,获取Connection 数据库连接对象
conn = DriverManager.getConnection();
//3.获取SQL语句执行对象
stmt = conn.createStatement();
//4.写sql语句
String sql = "select * from user";
//5,执行sql语句,返回结果集对象
res = stmt.executeQuery(sql);
//6.获取结果集里边的数据
while(res.next()){//判断当前行是不是最后一行末尾
int id = res.getSring("id");//获取列名是 id 的数据
}
System.out.println(id);//打印id
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (res != null) {//先把小的关了
try {
res.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
然后就可以获取数据库那边的数据啦~
为了防止sql的注入问题(这里就不说sql的注入是啥了,请百度一下啦~),以后是用不到Statement对象的。相对只会使用PreparedStatement对象
PreparedStatement对象与Statement对象的【不同点】
- 1.创建时传入sql语句而不是执行时传入。
- 2.参数用 ? 代替
- 比如:下边的sql语句
- String sql="update 表名 set name = "张三" "
- 如果用的是PreparedStatement对象,就要这样写:
String sql="update 表名 set name =? "//然后调用PreparedStatement对象里边的成员方法
setXxx(int类型的参数:代表的是第几个问号,Xxx类型的参数”)
Xxx指的是 ?问号的类型的参数。