JDBC固定步骤
1、 加载驱动
2、 连接数据库
3、 向数据库发送SQL的对象Statement:CRUD
4、 编写SQL(根据业务,不同的SQL)
5、 执行SQL
6、 关闭连接 释放资源
查询 executeQuery
public static void main(String[] args) throws Exception {
String url ="jdbc:sqlserver://localhost:1433;databaseName=test";
//1、加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//2、连接数据库
Connection conn = DriverManager.getConnection(url, "sa", "lnsfxy2018324410");
//3、向数据库发送SQL的对象statement PreparedStatement :CRUD
Statement statement = conn.createStatement();
//4、编写sql
String sql_sel="select * from tb_python ;";
//5、执行查询sql 返回结果集
ResultSet rs = statement.executeQuery(sql_sel);
while (rs.next()){
System.out.println("ID="+rs.getInt(1));
System.out.println("Name="+rs.getString(2));
System.out.println("Tel="+rs.getInt(3));
System.out.println("Address="+rs.getString(4));
}
//6、关闭连接 释放资源(先开后关)
rs.close();
statement.close();
conn.close();
}
修改删除 executeUpdate
import java.sql.*;
public class testJDBC {
public static void main(String[] args) throws Exception {
String url ="jdbc:sqlserver://localhost:1433;databaseName=test";
//1、加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//2、连接数据库
Connection conn = DriverManager.getConnection(url, "sa", "lnsfxy2018324410");
String sql_del =" DELETE from tb_python where id=?";
PreparedStatement pstm = conn.prepareStatement(sql_del);
pstm.setInt(1,2); //给第一个问号赋值
int i = pstm.executeUpdate(sql_del);
if (i>0){
System.out.println("修改删除成功");
}
//6、关闭连接 释放资源(先开后关)
statement.close();
conn.close();
}
}
导依赖包
<dependencies>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.2.1.jre8</version>
<scope>test</scope>
</dependency>
</dependencies>
事务
要么都成功,要么都失败
ACID原则:保证数据的安全性
例子:转账金额
A ----> B
A给B转100 A-100 ,B+100
为了数据安全性,需要事务保证 确保程序无错误,转账成功,
public static void main(String[] args){
String url ="jdbc:sqlserver://localhost:1433;databaseName=test";
Connection conn=null;
//1、加载驱动
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//2、连接数据库
conn = DriverManager.getConnection(url, "sa", "lnsfxy2018324410");
//3、开启事务 false开启
conn.setAutoCommit(false);
//4、执行第一个sql
String sql1="update account set money=money-100 where id='1'";
conn.prepareStatement(sql1).executeUpdate();
//制造错误,出错,则进入回滚回到初始化,第4步等于没执行
int a=1/0;
//5、第二个sql
String sql2="update account set money=money+100 where id='2'";
conn.prepareStatement(sql2).executeUpdate();
//若无错误、则提交事务
conn.commit();
} catch (Exception e) {
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
}