前言:做了做老师布置的JDBC的作业,真的是惨不忍睹,现在就是不太敢上交,因为老师就在面前,所以趁现在把博客写写吧,感觉自己折腾这些东西真的有些时候了,跟大佬没法比,一个小时和两天,啧啧啧,唉,不能太丧啊。
先附上当时看到的一片博客吧:https://www.cnblogs.com/xdp-gacl/p/3946207.html 条例清楚,给当时迷茫的我指点了迷津,让我回忆起了过去的辉煌。
JABC连接的基本步骤:
1、安装驱动
驱动的话直接上网找JDBC的驱动就好,加载到你使用的java或者web工程下即可,要注意的是一定要看好自己的MySQL的版本是不是和驱动的版本相适应,查看方法:命令窗口:mysql -V,一次查看自己的MySQL的版本。
2、代码实现连接数据库
(1)首先进行驱动的加载
Class.forName("com.mysql.cj.jdbc.Driver")
注意MySQL8.0版本的驱动加载要加上jc,这个很重要.
(2)定义一个String类型的url变量用来接受相关的控制信息
String url;
url="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
注意的其中的test使用的是你的数据库的名称,这个引人而异,其他的是一样的(访问本地数据库)。
(3)连接数据库
Connection =DriverManager.getConnection(url,"root","password");
root所对应的是你的用户名,如果忘记用户名或者懒。。。直接用root即可,password放的是你登录数据库使用的密码。
(4)书写sql语句
定义一个Stirng类型的sql变量用来保存sql语句,再使用PreparedStatement来执行sql语句
String sql="SELECT * FROM book";
PreParedStatement pst=connection.pst(sql);
注意在sql语句中可以使用通配符“?”来代替实际的额参数,但是在后面的是心中必须使用相应的函数进行传参和赋值。
String sql="UPDATE book SET bookno=?,bookname=?,author=?,press=?,price=? where id=?";
PreparedStatement preparedStatement=connection.prepareStatement(sql);
preparedStatement.setString(1, bookno);
preparedStatement.setString(2, bookname);
preparedStatement.setString(3, author);
preparedStatement.setString(4, press);
preparedStatement.setInt(5, price);
preparedStatement.setInt(6, id);
以上可以使用在方法中,利用形参进行赋值。此时完成了对数据库相应的操作。
(5)输出sql(结果集)
结果集要是用相应的preparedStatement的方法进产生和接收。详见博客https://www.cnblogs.com/cai662009/p/8046410.html
根据不同的数据库的操作使用不同的方法,以SELECT为例:要进行数据库的遍历和输出
ResultSet resultset=preparedStatement.executeQuery();
while(resultset.next())
{
System.out.println(resultSet.getString(1)+" "
+resultSet.getString(2)+" "
+resultSet.getString(3)+" "
+resultSet.getString(4)+" "
+resultSet.getString(5)+" "
+resultSet.getString(6));
}
这样就完成了数据库所有元素的输出,里面的数字1等是表明了元素在语句中的位置,在“*”中就代表了他们在数据库中的位置。
也可以用字符串来保存相关的内容然后一行一行的直接输出字符串。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
基本上就是这些,附上代码,不明白的应该会找到答案
import java.util.*;
import org.omg.PortableInterceptor.ServerRequestInfo;
import java.lang.*; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.io.*;
public class Main {
//添加的函数
public static boolean add (int id,String bookno,String bookname,String author,String press,int price)
{ try
{ String sql="INSERT INTO book VALUES (?,?,?,?,?,?)"; PreparedStatement preparedStatement=connection.prepareStatement(sql); preparedStatement.setInt(1, id);
preparedStatement.setString(2, bookno);
preparedStatement.setString(3, bookname);
preparedStatement.setString(4, author);
preparedStatement.setString(5, press);
preparedStatement.setInt(6, price);
preparedStatement.executeUpdate();//用来产生结果集,但是暂时不输出 preparedStatement.close();
System.out.println("添加成功");
return true; }
catch (Exception e) {
// TODO: handle exception
System.out.println("添加失败,注意主键重合");
return false;
}
}
//删除函数
public static void delete(String bookno) throws SQLException
{ String sql="DELETE FROM book WHERE bookno=?";
PreparedStatement preparedStatement=connection.prepareStatement(sql);
try {
preparedStatement.setString(1, bookno);
preparedStatement.executeUpdate();
preparedStatement.close();
System.out.println("删除成功");
}
catch (SQLException e) {
System.out.println("删除失败,表中无此元素");
//e.printStackTrace();
}
}
//修改函数
public static void change(int id,String bookno,String bookname,String author,String press,int price)
{
try {
String sql="UPDATE book SET bookno=?,bookname=?,author=?,press=?,price=? where id=?"; PreparedStatement preparedStatement=connection.prepareStatement(sql); preparedStatement.setString(1, bookno);
preparedStatement.setString(2, bookname);
preparedStatement.setString(3, author);
preparedStatement.setString(4, press);
preparedStatement.setInt(5, price);
preparedStatement.setInt(6, id);
preparedStatement.executeUpdate();//用来产生结果集,但是暂时不输出 preparedStatement.close();
System.out.println("修改成功");
} catch (Exception e) {
// TODO: handle exception
System.out.println("修改失败,错误代码");
e.printStackTrace();
}
}
//查询函数
public static void select(String bookno) { String sql="SELECT * FROM book WHERE bookno=?";
try {
PreparedStatement preparedStatement=connection.prepareStatement(sql); preparedStatement.setString(1, bookno);
ResultSet resultSet=preparedStatement.executeQuery();
String string="";
//int judge;
while(resultSet.next())
{
// judge=resultSet.getInt(1);
string+=resultSet.getString(1) + "\t" + resultSet.getString(2) + "\t" +resultSet.getString(3) + "\t" + resultSet.getString(4) + "\t"+ resultSet.getString(5) + "\t" + resultSet.getString(6);
}
if(string=="")
{ System.out.println("无该信息");
return; }
else {
System.out.println("查找成功");
System.out.println(string);
}
preparedStatement.close();
resultSet.close();
} catch (SQLException e) {
System.out.println("查找失败,检查后重试");
// e.printStackTrace();
}
}
//输出函数
public static void display()
{
try {
String sql="SELECT * FROM book";
PreparedStatement preparedStatement=connection.prepareStatement(sql);
String string="";
ResultSet resultSet=preparedStatement.executeQuery();
while(resultSet.next())
{ System.out.println(resultSet.getString(1)+" " +resultSet.getString(2)+" "
+resultSet.getString(3)+" "
+resultSet.getString(4)+" "
+resultSet.getString(5)+" "
+resultSet.getString(6));
}
}
catch (SQLException e) {
e.printStackTrace();
}
}
static String url;
static Connection connection;
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("com.mysql.cj.jdbc.Driver");
url="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";//写在整行上的驱动加载异常
connection=DriverManager.getConnection(url, "root","123456");//三个参数 //connection=DriverManager.getConnection(url);
System.out.println("添加");
add(7,"0007" , "singer", "wanglihong", "ffff", 80);
//因为设置了主键,所以添加时一定注意不能与以有的主键重合
display();
System.out.println("修改");
change(1, "0001", "DataStruct", "ZhangGuangMei", "eeee", 15);
display();
System.out.println("删除");
delete("0003");
display();
System.out.println("查找");
select("0001");
}
}
以上就是全部见解,希望大佬指正,如有错误,会及时更新。