jdbc是连接java和数据库的桥梁,对于不同的数据库,如果我们希望用java连接,我们需要下载不同的驱动。这里我们使用mysql数据库,下载驱动。
MySQL :: Download MySQL Connector/J (Archived Versions)
(版本自己选,操作系统选independent)
下载下来之后是应该压缩包
打开压缩文件,以下面这个目录为例,把上面图片里的这个jar包复制到javaweb这个大文件夹下
注意是javaweb这个文件夹下,不是里面的src文件夹。
然后打开idea,在idea里的目录里找到这个包(在下面这张图里红色的),右键,选择“添加为库”,然后点击确定即可。
然后我们就可以开始写代码了,通过java来写sql语句操作数据库
package jdbc1;
import java.sql.*;
public class Database {
public static void main(String args[]){
try(
//创建一个连接
Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306","root","020809");
//创建一个对象来执行sql语句
Statement statement=connection.createStatement();
//这两个东西都需要关闭,所以写进try里,自动关闭
)
{
//存放sql执行完毕的结果
ResultSet resultSet=statement.executeQuery("select * from accounting_ledger.ledger");
//打印
while(resultSet.next()){
System.out.println(resultSet.getString(2));
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
注意:
1.DriverManager.getConnection("jdbc:mysql://localhost:3306","root","020809");三个参数依次是数据库的url,用户名,密码。
右键,选择属性,我们就能看到url了。
2. ResultSet resultSet=statement.executeQuery("select * from accounting_ledger.ledger");中的“accounting_ledger”是架构,和表不是一个概念。
在MySQL中,通常一个数据库对应一个架构,而一个架构包含多个表。架构提供了对数据库对象的一种逻辑组织方式,而表则用于存储和管理实际的数据。
//存放sql执行完毕的结果
ResultSet resultSet=statement.executeQuery("select * from accounting_ledger.ledger");
//打印
while(resultSet.next()){
System.out.println(resultSet.getString(2));
}
statement类的executeQuery方法返回一个resultSet对象,这个方法只用来执行select语句。
如果想打印数据,除了上面的getString方法之外,还可以选择以其他类型返回数据,比如getInt。
这里的resultSet类会返回一个指针,指针指向第一行。列不是从0开始的
当指针指向第一行的时候,我们可以读取第一行的任意列。
如果我们希望读取第二行的数据,就再次调用next方法即可。
int i = statement.executeUpdate("INSERT INTO accounting_ledger.user VALUES ('lyx', '12345');");
System.out.println("lines changed "+i);
statement类的executeUpdate方法返回一个int,表明执行的语句更改了多少行,这个方法用来执行insert,delect之类的语句。
当我们希望插入多条数据的时候,我们可以选择使用多次executeUpdate,也可以选择先将语句加入缓存:
statement.addBatch("INSERT INTO accounting_ledger.user VALUES ('lyx', '12345');")
statement.addBatch("INSERT INTO accounting_ledger.user VALUES ('lyx1', '12345');")
statement.addBatch("INSERT INTO accounting_ledger.user VALUES ('lyx2', '12345');")
statement.addBatch("INSERT INTO accounting_ledger.user VALUES ('lyx3', '12345');")
然后一次执行全部
statement.executeBatch();