学习过程中逐渐添加知识点。自己学习,以防忘记。
目录
3.preparedstatement向数据库中插入数据(有字段自动编号)
1.JDBC开发步骤
- 导入jar包(大多数情况下,使用 import java.sql. 就足够了)
- 加载JDBC驱动程序:需要你初始化一个驱动器,以便于你打开一个与数据库的通信通道。Class.forName("com.mysql.jdbc.Driver"); //固定写法
- 打开一个数据库连接:
需要使用 DriverManager.getConnection() 方法创建一个 Connection 对象,它代表与数据库的物理连接。
Connection connection = DriverManager.getConnection(url,user,password);
url格式:
主协议:子协议://主机:端口/数据库名称
jdbc :mysql :// localhost:3306/mydatabase
user:数据库用户名
password:连接数据库密码 - 执行查询:
需要使用类型声明的对象建立并提交一个 SQL 语句到数据库。
1)通过Connection创建Statement对象
Connection类: 代表数据库连接,要想访问数据库,必须先获得数据库连接
2)使用Statement对象来执行SQL语句,CRUD等操作,返回一个ResultSet对象 - 提取结果数据:要求使用适当的 ResultSet.getXXX() 方法从结果集中检索数据。
next()方法:用于判断是否有下一条记录。如果有返回true,并且让游标向下移动一行,如果没有返回false。
getXxx()方法:获取当前游标指向的这条记录中的列数据。如:getInt(),getString(),getDate(),getDouble()等。 - 清理环境:手动关闭或依靠 JVM 的垃圾收集来关闭所有需要明确关闭的数据库资源。
Statement对象
- Execute(): 运行SQL语句,返回是否有结果,返回的结果是一个对象集。
- ExecuteQuery(): 运行查询语句,返回ResultSet对象。
- ExecuteUpdate(): 运行更新操作,返回更新的行数。
2.入门级例子demo
import java.sql.*;
public class SelectData {
//STEP1:定义jdbc驱动和数据库链接
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/students";
static final String USER = "root";
static final String PASS = "123456";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
//STEP2:注册jdbc驱动
Class.forName(JDBC_DRIVER);
System.out.println("Connecting database...");
//STEP3:打开一个连接
conn = DriverManager.getConnection(DB_URL,USER,PASS);
System.out.println("Connected database...");
//STEP4:执行sql语句
stmt = conn.createStatement();
String sql = "select * from REGISTRATION";
ResultSet rs = stmt.executeQuery(sql);
//STEP5:取结果
while (rs.next()){
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
System.out.print("ID: " + id + "\t" + " Age: " + age + "\t" +
" First: " + first + "\t"+ " Last: " + last + "\t");
System.out.println();
}
//STEP6:清理环境
rs.close();
stmt.close();
conn.close();
} catch (SQLException se){
se.printStackTrace();
} catch (Exception e){
e.printStackTrace();
} finally {
try {
//关闭
if(stmt != null)
conn.close();
} catch (SQLException se){
}
try {
if(conn != null)
conn.close();
}catch (SQLException se){
se.printStackTrace();
}
}
}
}
为啥感觉可以直接套用,只要修改中间的sql语句就可以了呢!不知道,可能这只是基础而已。加油,继续干!
3.preparedstatement向数据库中插入数据(有字段自动编号)
数据库表goods字段如下:其中GID是自动编号的。通过键盘输入其他数据。自动编号的字段弄了好久一直没有成功,网上搜也搜不到能够解决的方法。后来问了前辈,他说直接在表后面加上字段试试,不选第一个GID,呀呀呀,真的成功了,哈哈哈哈开心。
import java.sql.*;
import java.util.Scanner;
public class InsertDataHavePara {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/long";
static final String USER = "root";
static final String PASS = "123456";
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
Scanner s = new Scanner(System.in);
System.out.println("输入商品名称:");
String name = s.nextLine();
System.out.println("输入商品价格:");
Float price = s.nextFloat();
System.out.println("输入商品数量:");
int num = s.nextInt();
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL,USER,PASS);
String sql = "insert into goods(GName,GPrice,GNum) values(?,?,?) ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,name);
pstmt.setFloat(2,price);
pstmt.setInt(3,num);
int i = pstmt.executeUpdate();
if(i > 0){
System.out.println("商品添加成功!");
}
pstmt.close();
conn.close();
}catch (SQLException se){
se.printStackTrace();
}catch (Exception e){
e.printStackTrace();
} finally{
try {
if(pstmt != null)
conn.close();
} catch (SQLException se){
}
try {
if(conn != null)
conn.close();
}catch (SQLException se){
se.printStackTrace();
}
}
}
}