幾種常見的數據庫驅動格式和URL格式
1、 驅動格式
a) MySQL: com.mysql.jdbc.Driver
或者org.gjt.mm.mysql.Driver
b) SQL Server:
com.miscrosoft.sqlserver.jdbc.SQLServerDriver
c) Oracle: oracle.jdbc.driver.OracleDriver
2、 URL格式
a) MySQL:
jdbc:mysql://localhost:3306/數據庫名
b) SQL Server:
jdbc:sqlserver://127.0.0.1:1433;databaseName=數據庫名
c) Oracle:
jdbc:oracle:thin:@localhost:1521:數據庫名
JDBC開發步驟
1、創建Java項目,並加入數據庫jar包
(1)在項目上創建一個文件夾,名稱爲lib
(2)把相應的jar包複製到此文件夾中
(3)右擊jar包-->Build Path-->add too Build Path
2、加載數據庫驅動
Class.forName("org.gjt.mm.mysql.Driver")
Class.forName("com.mysql.jdbc.Driver")
3、獲得數據庫連接
Connectionconnect = DriverManager.getConnection(url, 用戶名, 密碼)
url表示數據庫連接協議:jdbc:mysql://localhost:3306/數據庫名
jdbc:mysql://-->數據庫協議
localhost-->表示數據庫服務的ip地址
3306-->表示數據庫服務的端口號
用戶名:root
密碼:123456
4、創建會話
Statementstate = connect.createStatement();
5、執行sql語句
state.executeUpdate(sql);//增刪改
ResultSetset = state.executeQuery(sql);//查
6、關閉會話以及數據庫連接
state.close();
connect.close();
JDBC具體實現操作
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class MyJDBC {
// 靜態代碼塊:類被加載就執行,並且只執行一次
static{
try{
//2、加載驅動
Class.forName("com.mysql.jdbc.Driver");
}catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 創建表
publicstatic void createTable() throws SQLException {
//3、獲得數據庫連接
Connectionconnect =DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc", // 連接數據庫的url地址
"root",// 數據庫服務的用戶名
"123456");//數據庫服務的密碼
//4、創建會話
Statementstate = connect.createStatement();
//5、執行SQL語句
Stringsql = "create table student(id int primary key auto_increment, " +"name char(10), " + "sex char, "
+"age int);";
state.execute(sql);
System.out.println("student表創建成功");
//6、關閉
state.close();
connect.close();
}
// 增加數據
publicstatic void insertData() throws SQLException {
Connectionconnect = null;
Statementstate = null;
try{
//3、獲得數據庫連接
connect= DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc",// 連接數據庫的url地址
"root",// 數據庫服務的用戶名
"123456");//數據庫服務的密碼
//4、創建會話
state= connect.createStatement();
/*
* 方式1 //5、執行SQL語句 for(int i = 0; i < 5; i++) { //寫定數據添加 String sql
* = "insert into student(name, sex, age)values('小明', '男', 20)";
* state.executeUpdate(sql); }
*/
/*
* 方式2 //準備數組資源 String[] name = {"張三","李四","王二麻子","趙六","鐵柱"};
* String[] sex = {"男", "女"};int[] age = {10,11,12,14,15};
*
* //5、執行SQL語句 for (int i = 0; i < 5; i++) { int a= (int)
* (Math.random()*2);//獲得0~2之間的隨機整數 //從數組中獲取數據依次添加 String sql =
* "insert into student(name, sex, age)values('" + name[i] + "', '"
* +sex[a]+"', " + age[i] +")";
*
* state.executeUpdate(sql); }
*/
//方式3
//通過鍵盤輸入添加數據
Scannersc = new Scanner(System.in);// 獲取鍵盤輸入
while(true) {
System.out.println("請輸入名字:");
Stringname = sc.next();
System.out.println("請輸入性別:男或女");
Stringsex = sc.next();
System.out.println("請輸入年齡");
intage = sc.nextInt();
Stringsql = "insert into student(name, sex, age) values('" + name +"', '" + sex + "', " + age + ");";
state.executeUpdate(sql);
}
}catch (Exception e) {
e.printStackTrace();
}finally {
//關閉
state.close();
connect.close();
}
}
// 刪除數據
publicstatic void deleteData() throws SQLException {
//3、獲得數據庫連接
Connectionconnect =DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc", // 連接數據庫的url地址
"root",// 數據庫服務的用戶名
"123456");//數據庫服務的密碼
//4、創建會話
Statementstate = connect.createStatement();
//執行SQL語句
Scannersc = new Scanner(System.in);
System.out.println("請輸入要刪除的記錄的id號:");
intid = sc.nextInt();
Stringsql = "delete from student where id=" + id + ";";
state.executeUpdate(sql);
System.err.println("數據刪除成功");
//關閉
state.close();
connect.close();
sc.close();
}
// 更改數據
publicstatic void updateData() throws SQLException {
//3、獲得數據庫連接
Connectionconnect =DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc", // 連接數據庫的url地址
"root",// 數據庫服務的用戶名
"123456");//數據庫服務的密碼
//4、創建會話
Statementstate = connect.createStatement();
//執行SQL語句
Scannersc = new Scanner(System.in);
System.out.println("請輸入要刪除的記錄的id號:");
intid = sc.nextInt();
Stringsql = "update student set name='小紅', sex='女' where id=" + id +";";
state.executeUpdate(sql);
System.err.println("數據更改成功");
//關閉
state.close();
connect.close();
sc.close();
}
// 查詢數據
publicstatic List<Student> selectData() throws SQLException {
List<Student>list = new ArrayList<>();
//3、獲得數據庫連接
Connectionconnect =DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc", // 連接數據庫的url地址
"root",// 數據庫服務的用戶名
"123456");//數據庫服務的密碼
//4、創建會話
Statementstate = connect.createStatement();
//執行SQL語句
Stringsql = "select * from student where id in(1,3,5,7,9)";
ResultSetset = state.executeQuery(sql);
while(set.next()){
// intid = set.getInt(1);//根據id字段的列標獲取字段的值
intid = set.getInt("id");
Stringname = set.getString("name");
Stringsex = set.getString("sex");
intage = set.getInt("age");
Studentstu = new Student(id, name, sex, age);
list.add(stu);
}
//關閉
state.close();
connect.close();
returnlist;
}
publicstatic void main(String[] args) throws SQLException {
//MyJDBC.createTable();
//MyJDBC.insertData();
//MyJDBC.deleteData();
// MyJDBC.updateData();
List<Student>list = MyJDBC.selectData();
for(Student student : list) {
System.out.println(student);
}
}
}
//javaBean
public class Student {
privateint id;
privateString name;
privateString sex;
privateint age;
publicStudent(int id, String name, String sex, int age) {
super();
this.id= id;
this.name= name;
this.sex= sex;
this.age= age;
}
publicStudent() {
super();
}
publicint getId() {
returnid;
}
publicvoid setId(int id) {
this.id= id;
}
publicString getName() {
returnname;
}
publicvoid setName(String name) {
this.name= name;
}
publicString getSex() {
returnsex;
}
publicvoid setSex(String sex) {
this.sex= sex;
}
publicint getAge() {
returnage;
}
publicvoid setAge(int age) {
this.age= age;
}
@Override
publicString toString() {
return"Student [id=" + id + ", name=" + name + ", sex="+ sex + ", age=" + age + "]";
}
}