1,连接数据库之前的操作
在数据库可视化软件新建一个连接;
新建一个数据表;
在数据表创建数据
(id设置为自增长)
(除了statement之外,还有更好的连接方式,这里只讲基本的连接方式,如果需要了解PreparedStatement ,QueryRunner
可以到这里:再谈连接数据库 )
2,JDBC操作数据库的步骤
1.注册驱动
告知JVM使用的是哪一个数据库的驱动
2.获得连接
使用JDBC中的类,完成对MySQL数据库的连接
3.获得语句执行平台
通过连接对象获取对SQL语句的执行者对象
4.执行sql语句
使用执行者对象,向数据库执行SQL语句
获取到数据库的执行后的结果
5.处理结果
6.释放资源 一堆close()
3,一个详细的例子
刚开始最好记得步骤
public static void main(String[] args) throws Exception {
// 1.注册驱动 建议使用 反射技术,将驱动类加入到内容
/*
* 也可以使用java.sql.DriverManager类静态方法 registerDriver(Driver driver)
* Diver是一个接口,参数传递,MySQL驱动程序中的实现类 DriverManager.registerDriver(new
* Driver()); 驱动类源代码,注册2次驱动程序(所以不建议使用)
*/
Class.forName("com.mysql.jdbc.Driver");// 新加入那个jar包的一个驱动类
// 2.获得数据库连接 DriverManager类中静态方法
// static Connection getConnection(String url, String user, String
// password)
// 返回值是Connection接口的实现类,在mysql驱动程序
// url: 数据库地址 -->jdbc:mysql://连接主机IP:端口号//数据库名字
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "951218";
Connection connection = DriverManager.getConnection(url, user, password);
// 3.获得语句执行平台, 通过数据库连接对象,获取到SQL语句的执行者对象
// connection对象调用方法 Statement createStatement()
// 获取Statement对象,将SQL语句发送到数据库
// 返回值是 Statement接口的实现类对象,在mysql驱动程序
Statement statement = connection.createStatement();
// 4.执行sql语句
// 通过执行者对象调用方法执行SQL语句,获取结果
// int executeUpdate(String sql) 执行数据库中的SQL语句, insert delete update
// 返回值int,操作成功数据表多少行
int row = statement.executeUpdate("INSERT INTO users (username ,PASSWORD)VALUE('张xian','123') ");
System.out.println(row);
statement.close();
connection.close();
}
4,一个GUI案例:用户登录和注册
public class Main {
public static void main(String[] args) {
new MyJFrame();
}
}
import java.sql.Connection;
import java.sql.DriverManager;
public class MyConnection {
private static String url= "jdbc:mysql://localhost:3306/mybase";
private static String name = "root";//数据库用户名
private static String password = "951218";//数据库密码
private static String driver = "com.mysql.jdbc.Driver";//驱动
private static Connection connection;
//静态块,执行一次
static{
try {
Class.forName(driver);
connection = DriverManager.getConnection(url,name,password);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
return connection;
}
}
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class MyJFrame extends JFrame{
private static final long serialVersionUID = 1L;
private JTextField tfNameField;//用户名
private JTextField tfPasswordField;//密码
private JButton entryButton ;//登录
private JButton enrollButton;//注册
private String name = "";
private String password = "";
public MyJFrame(){
super("超级银行");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(800,100,350,190);
// setResizable(false);
setLayout(new GridLayout(2,1));
Container container = getContentPane();
//面板1
JPanel panel_1 = new JPanel();
container.add(panel_1);
tfNameField = new JTextField(20);
tfPasswordField = new JTextField(20);
panel_1.add(new JLabel("用户名 "));
panel_1.add(tfNameField);
panel_1.add(new JLabel("用户密码"));
panel_1.add(tfPasswordField);
//面板2
JPanel panel_2 = new JPanel();
container.add(panel_2);
entryButton = new JButton("登录");
enrollButton = new JButton("注册");
panel_2.add(entryButton);
panel_2.add(enrollButton);
//连接数据库
Connection connection = MyConnection.getConnection();
//监听
//登录
entryButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(!isSeccess()){
return;
}
//执行sql
try {
//一定要加引号表示字符串
String sql = "SELECT * FROM userinfo WHERE name='" +name+ "'AND password='"+password+"'";
Statement statement = connection.createStatement();
boolean update = statement.execute(sql);
if(update){
JOptionPane.showMessageDialog(MyJFrame.this, "登录成功");
}else {
JOptionPane.showMessageDialog(MyJFrame.this, "用户名或密码错误");
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
});
//注册
enrollButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(!isSeccess()){
return;
}
//执行sql
try {
String sql = "INSERT INTO userinfo (name,password)VALUE('" +name+ "','" +password+ "')";
Statement statement = connection.createStatement();
int executeUpdate = statement.executeUpdate(sql);
if(executeUpdate == 1){
JOptionPane.showMessageDialog(MyJFrame.this, "注册成功");
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
});
setVisible(true);
}
private boolean isSeccess(){
//收集数据
name = tfNameField.getText();
password = tfPasswordField.getText();
//防护
if(name.trim().equals("")){
JOptionPane.showMessageDialog(MyJFrame.this, "请输入用户名");
return false;
}
if(password.trim().equals("")){
JOptionPane.showMessageDialog(MyJFrame.this, "请输入密码");
return false;
}
return true;
}
}