要好好的
都会好起来的。
1.首先从mysql官网下载mysql-connector-java.jar包到本地。
这里注意要和你本地的mysql数据库版本相匹配!
创建java项目,导入mysql-connector-java-8.0.13.jar包
有两种写法:
java.sql.DriverManager.registerDriver( )
方法加载驱动。DriverManager.registerDriver(new com.mysql.jdbc.Driver());
该方式不但强烈依赖数据库的驱动jar而且会导致驱动被重复注册2次。故,不建议使用
所以我们使用第二种,通过反射加载。
2.通过反射加载
Class.forName("com.mysql.cj.jdbc.Driver");
Class.forName("com.mysql.jdbc.Driver");
为什么会有两种呢?
这里请看这位博主的:
com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别
利用java.sql.Drivermanager
类中的getConnection()
方法与数据库建立连接。
语法如下:
DriverManager.getConnection(“jdbc:mysql://数据库地址:端口号/数据库名”,”用户名”, “密码”);
示例如下:
Connection connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb”,”root”, “123456”);
String url="jdbc:mysql://localhost:3306/mydb";
String user="root";
String password="123456";
Connection connection=DriverManager.getConnection(url, user, password);
在该语法及其示例中,jdbc表示协议,mysql表示子协议,localhost代表数据库地址,3306表示端口号,
mydb表示要连接的数据库;第一个root表示用户名,第二个123456表示密码
DriverManager.getConnection()方法返回的是java.sql.Connection类型的对象。
利用java.sql.Connection创建用于执行SQL语句的Statement。
示例如下:
Statement statement = connection.createStatement();
Connection的createStatement()方法返回的是实现java.sql.Statement接口的对象。java.sql.Statement接口用于操作SQL语句并返回相应的结果集
利用java.sql.Statement执行SQL语句,其常用方法如下:
execute(String sql )
该方法可以执行任意SQL语句。当且仅当执行select语句且有返回结果时该方法返回true, 其他情况下该方法返回false
executeUpdate(String sql )
该方法常用于执行DML( INSERT、UPDATE或DELETE)和DDL语句。执行DML语句时返回受SQL语句影响的行数,执行DDL语句时返回0
executeQuery( String sql)
该方法通常执行査询语句,执行后返回代表结果集的ResultSet对象
示例如下:
ResultSet resultSet = statement.executeQuery(sql);
在该示例中statement.executeQuery( )方法返回的是实现java.sql.ResultSet接口的对象。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
Connection connection = null;
Statement statement=null;
ResultSet resultSet=null;
connection = DriverManager.getConnection(url, user, pwd);
//3.获取数据库操作对象
statement = connection.createStatement();
//4.执行SQl语句
String sql = "insert into t_user(no,name,pwd) values (5,'iah','123')";
//5.获取结果集
ResultSet resultSet= statement.executeUpdate(sql);
System.out.println(resultSet);
//释放资源
resultSet.close();
statement.close();
connection.close();
数据库资源非常宝贵,数据库允许的并发访问连接数量有限。因此,当数据库资源用完后切记释放资源。为了保证资源的释放,常在finally代码块中关闭与数据库操作相关的资源。
完整代码实列:
public class Student {
private int studentID;
private String studentName;
public Student() {
}
public Student(int studentID, String studentName) {
this.studentID = studentID;
this.studentName = studentName;
}
public int getStudentID() {
return studentID;
}
public void setStudentID(int studentID) {
this.studentID = studentID;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
@Override
public String toString() {
return "Student{" +
"studentID=" + studentID +
", studentName='" + studentName + '\'' +
'}';
}
}
public class TestJDBC {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//建立连接
connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb" , "root", "123456");
//创建statement
statement = connection.createStatement();
String sql = "select * from student";
//执行SQL
resultSet = statement.executeQuery(sql);
//处理结果
while (resultSet.next()) {
Student student = new Student();
int id = resultSet.getInt("studentid");
String name = resultSet.getString("studentname");
student.setStudentID(id);
student.setStudentName(name);
System.out.println(student);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
//关闭资源
}finally {
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
resultSet = null;
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
statement = null;
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
connection = null;
}
}
}
}
从现在做起,坚持下去,一天进步一小点,不久的将来,你会感谢曾经努力的你! |
如果又出错的,请各位友友指正。
新人报到,各位友友们,给我个三联(点赞,关注,收藏)