JDBC(java Database Connectivity)数据库连接(客户端如何访问数据库):
主流架构(两种架构):
1、BS架构(Browser and server)浏览器服务器架构-------》web、javaweb、phpweb
2、CS架构(Client and server)客户端服务器架构---------》QQ、微信
主要是使用java程序对数据库的访问
JDBC连接步骤:
加载驱动----->建立连接------>执行语句------>得到结果集
1、加载驱动:
首先需要导入jar包,可以在Moven Repository中寻找本机版本中所需要的驱动代码,复制到中。
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
2、建立连接:
驱动程序名
Class.forName("com.mysql.cj.jdbc.Dviver ");
//URL指向要访问的数据库名scutcs
连接数据库:DriverManager.getConnection(“jdbc:mysql://localhost:3306/l? serverTimezone=GMT&useSSL=false&allowPublicKeyRetrieval=true”,“root”,“1234”);
第一个参数是数据库链接地址(不同数据库会有不同的连接地址,由数据库厂商提供),第二个参数是用户名,第三个参数是密码
3306之后的l:代表的是自己建立的数据库名称。
时区:serverTimezone=GMT
数据库的地址简化:使用resource中的resource bundle建立一个新的properties,
(主要是避免因数据库的地址改变而影响整个代码的改变)
jdbc.url=jdbc:mysql://localhost:3306/l?serverTimezone=GMT&useSSL=false&allowPublicKeyRetrieval=true
jdbc.username=root
jdbc.password=1234
//该段代码不能出现有空格键或者是tab键的情况
properties.load(this.getClass().getClassLoader().getResourceAsStream(“db.properties”));
Connection conn= DriverManager.getConnection(properties.getProperty("jdbc.url"),properties.getProperty("jdbc.username"),properties.getProperty("jdbc.password"));
public void init()
{
try{
Class.forName("com.mysql.cj.jdbc.Dviver ");
Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/l? serverTimezone=GMT&useSSL=false&allowPublicKeyRetrieval=true","root","1234");
PreparedStatement preparedStatement=conn.prepareStatement("select * from lzx;");
ResultSet resultSet=((PreparedStatement) preparedStatement).executeQuery();
while(resultSet.next())
{
//打印查询出来的第一个字段
System.out.println(resultSet.getString(1));
System.out.println(resultSet.getString(2));
}
resultSet.Close();
}catch (ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e)
{
e.printStackTrace();
}
}
查询主要语句
PreparedStatement preparedStatement=conn.prepareStatement("select * from lzx;");
ResultSet resultSet=((PreparedStatement) preparedStatement).executeQuery();
while(resultSet.next())
{
//打印查询出来的第一个字段
System.out.println(resultSet.getString(1));
System.out.println(resultSet.getString(2));
}
//结果集展示语句:
ResultSet resultSet=((PreparedStatement) preparedStatement).executeQuery()
插入语句:
preparedStatement.executeUpdate("insert into user values (\"酱紫\",\"41702253\",19);");
删除语句:
preparedStatement.executeUpdate("delete from user where name=\"酱紫\"");
executeQuery:实现查询功能,用于产生单个的结果集。
executeUpdate:实现mysql语句中的删除delete,修改update,增加insert语句。
execute:也可以mysql语句,但它可以返回一个Boolean值,表明执行了该MySQL语句是否返回了 resultset
conn = DriverManager.getConnection(url , user , pass);
stmt = conn.createStatement();
boolean hasResultSet = stmt.execute(sql);