在java中,数据库存取技术可分为如下几类:
JDBC是JAVA访问数据库的基石,JDO、Hibernate等知识更好的封装了JDBC
JDBC是一个独立于特定数据库管理系统(DBMS)、通用的SQL数据库存取和操作的公共接口(一组API)
作用:
JDBC的简单使用步骤
前提:准备mysql的驱动包,加载到项目中
在项目中建立libs文件夹,将mysql-connector-java-5.1.37-bin.jar文件复制到libs目录下,右击build path — add to build path
public class TestConnection {
public static void main(String[] args) throws SQLException{
//1. 加载驱动
DriverManager.registerDriver(new Driver());
//2. 获取连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/girls","root","2401");
System.out.println("连接成功");
//3. 执行增删改查
//3.1 编写SQL语句
String sql = "delete from beauty where id = 9";
//3.2 获取执行sql语句的命令对象
Statement statement = connection.createStatement();
//3.3 使用命令对象指向SQL语句
int update = statement.executeUpdate(sql);
//3.4 处理执行结果
System.out.println(update>0?"success":"failure");
//4. 关闭连接
statement.close();
connection.close();
}
}
类的加载时机
使用 new 对象 的方式加载类的不足:
采用反射的方式加载类
//1. 加载驱动
//使用 new 对象 的方式加载类,属于老方法,不推荐使用
DriverManager.registerDriver(new Driver());
//采用反射的方式加载类
Class.forName("com.mysql.jdbc.Driver");
将信息放在properties配置文件中
name=root
password=2401
url=jdbc:mysql://localhost:3306/girls
driver=com.mysql.jdbc.Driver
//2. 获取连接
//方式一:
DriverManager.getConnection("jdbc:mysql://localhost:3306/girls","root","2401");
//方式二:
DriverManager.getConnection("jdbc:mysql://localhost:3306/girls?user=root&password=2401");
//方式三:
//在src下新建一个properties配置文件,将一些信息放在其中
//通过properties对象保存配置文件中的信息
Properties info = new Properties();
info.load(new FileInputStream("src\\jdbc.properties"));
String user = info.getProperty("name");
String password = info.getProperty("password");
String driver = info.getProperty("driver");
String url = info.getProperty("url");
Connection connection = DriverManager.getConnection(url,user,password);
System.out.println("连接成功");
//查
String sql = "select id,name,sex from beauty";
//增
String sql = "insert into beauty values(null,'小龙女','女','2000-1-1','110',null,3)";
//删
String sql = "delete from beauty where id=13";
//改
String sql = "update beauty set name='迪丽热巴' where id=4";
//获取执行sql的命令对象
Statement statement = connection.createStatement();
//执行sql语句
//方式一:执行任何sql语句,增删改返回false,查如果查询到结果集,返回true,否则,返回false,因为结果非常不具体,所以不常用
boolean execute = statement.execute(sql);
//方式二:执行增删改查语句,返回受影响的行数
//增删改
int update = statement.executeUpdate(sql);
//查
//执行查询语句,返回一个结果
ResultSet set = statement.executeQuery(sql);
while(set.next()) {
int id = set.getInt(1);
String name = set.getString(2);
String sex = set.getString(3);
System.out.println(id+"\t"+name+"\t"+sex+"\t");
}
方式一:
getxx(列的索引)
例如:
int id = set.getInt(1);
String name = set.getString(2);
String sex = set.getString(3);
注意:这里的列的索引是sql语句查询出的表的列索引,不是原表列的索引。
例如String sql = "select name,id,sex from beauty";
,这里name列的索引值为1,id列的索引值为2
方式二:
getxx(别名)
例如:
int id = set.getInt("id");
String name = set.getString("name");
String sex = set.getString("sex");
如果我们并不知道数据类型,可以使用:
getObject(列的索引 | 别名)
//关闭连接,释放资源,避免连接处过多,导致数据库崩溃
statement.close();
connection.close();
set.close();