初始化部分以及调用到的方法
package Jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Myjdbc {
//分别有一个set/get方法
private Statement statement;
private Connection con;
public Connection getCon() {
return con;
}
public void setCon(Connection con) {
this.con = con;
}
public Statement getStatement() {
return statement;
}
public void setStatement(Statement statement) {
this.statement = statement;
}
private static Myjdbc sql;
//构造器+Myjdbc newInstance()方法形成单例设计模式
public static synchronized Myjdbc newInstance(){
if(sql==null){
sql=new Myjdbc();
}
return sql;
}
//通过构造器进行初始化
private Myjdbc(){
String driver="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/clazz";
String user="root";
String password="123456";
try {
Class.forName(driver);//加载驱动
con=DriverManager.getConnection(url, user, password);//连接
statement=con.createStatement();//statement
// String create="create table if not exists sqlbase (id int primary key auto_increment,username varchar(30),sex varchar(30),,salary int)";
String create="create table if not exists sqlbase (id int primary key auto_increment,username varchar(30),sex varchar(30),salary int)";
statement.execute(create);
System.out.println("chuanjina");
// String insert="insert into sqlbase (username,sex,salary)values('zhangsan','nan',7000)";
// String insert1="insert into sqlbase (username,sex,salary)values('lisi','nv',8000)";
// String insert2="insert into sqlbase (username,sex,salary)values('wangwu','nan',9000)";
// String insert3="insert into sqlbase (username,sex,salary)values('zhaoliu','nan',6000)";
// String insert4="insert into sqlbase (username,sex,salary)values('xiaoming','nan',7000)";
// statement.execute(insert);
// statement.execute(insert1);
// statement.execute(insert2);
// statement.execute(insert3);
// statement.execute(insert4);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//此方法在增加按钮中调用,在增加前先进行查询,是否存在相同的
//使用preparedstatement可以防止or '1='1的对象加入成功。需要记住它的用法
public boolean insert(String username,String sex,String salary){
String select="select * from sqlbase where username=? and sex=? and salary=?";
String insert="insert into sqlbase (username,sex,salary)values('"+username+"','"+sex+"','"+salary+"')";
try {
PreparedStatement pre=con.prepareStatement(select);
pre.setString(1, username);
pre.setString(2, sex);
pre.setString(3, salary);
ResultSet set=pre.executeQuery();
set.last();
int num=set.getRow();//返回查询结果的当前行
if(num==1){
//如果有此对象则添加失败
System.out.println("添加失败");
return false;
}else{
//无此对象时进行添加
statement.execute(insert);
System.out.println("添加成功");
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
//下面注释掉的方法存在'黑客'风险,添加or '1='1会添加成功
// String insert="insert into sqlbase (username,sex,salary)values('"+username+"','"+sex+"','"+salary+"')";
// try {
//
// String select="select * from sqlbase where username='"+username+"' and sex='"+sex+"'and salary='"+salary+"'";
// ResultSet set=statement.executeQuery(select);
// set.last();
// int num=set.getRow();
// if(num==1){
// System.out.println("添加失败");
// return false;
// }else{
// statement.execute(insert);
// System.out.println("添加成功");
// return true;
// }
//
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// return false;
// }
//
//
// }
主界面
package Jdbc;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
import java.awt.event.ActionEvent;
public class Myjdbcsql extends JFrame
private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JButton btnNewButton;
private JButton button_1;
private JLabel lblId;
private JTextField textField_3;
private JButton btnNewButton_1;
private Statement statement;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Myjdbcsql frame = new Myjdbcsql();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Myjdbcsql() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 323, 339);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
textField = new JTextField();
textField.setBounds(144, 37, 66, 21);
contentPane.add(textField);
textField.setColumns(10);
textField_1 = new JTextField();
textField_1.setBounds(144, 84, 66, 21);
contentPane.add(textField_1);
textField_1.setColumns(10);
textField_2 = new JTextField();
textField_2.setBounds(144, 115, 66, 21);
contentPane.add(textField_2);
textField_2.setColumns(10);
statement=Myjdbc.newInstance().getStatement();
JButton button = new JButton("查询");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String id=textField.getText();
String sql="select * from sqlbase where id='"+id+"'";
ResultSet set;
try {
set = statement.executeQuery(sql);
//为什么加.next():查看是否有这个id
while(set.next()){
String idset=set.getString("id");
String nameset=set.getString("username");
String sexset=set.getString("sex");
String salaryset=set.getString("salary");
System.out.println("编号"+idset);
System.out.println("用户名"+nameset);
System.out.println("性别"+sexset);
System.out.println("薪水"+salaryset);
textField.setText("");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
button.setBounds(26, 36, 79, 23);
contentPane.add(button);
btnNewButton = new JButton("修改");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//修改方法与增加的方法类似,此处不再重复
}
});
btnNewButton.setBounds(26, 77, 79, 23);
contentPane.add(btnNewButton);
button_1 = new JButton("删除");
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String id=textField_2.getText();
String sql="select * from sqlbase where id='"+id+"'";
ResultSet set;
try {
set = statement.executeQuery(sql);
while(set.next()){
String idset=set.getString("id");
String nameset=set.getString("username");
String sexset=set.getString("sex");
String salaryset=set.getString("salary");
System.out.println("编号"+idset);
System.out.println("用户名"+nameset);
System.out.println("性别"+sexset);
System.out.println("薪水"+salaryset);
textField.setText("");
}
} catch (SQLException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
String delete="delete from sqlbase where id='"+id+"'";
try {
statement.execute(delete);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("删除成功");
}
});
button_1.setBounds(26, 114, 79, 23);
contentPane.add(button_1);
lblId = new JLabel("ID");
lblId.setBounds(156, 10, 54, 15);
contentPane.add(lblId);
textField_3 = new JTextField();
textField_3.setBounds(144, 146, 66, 21);
contentPane.add(textField_3);
textField_3.setColumns(10);
btnNewButton_1 = new JButton("增加");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String id=textField_3.getText();
String sql="select * from sqlbase where id='"+id+"'";
try {
ResultSet set=statement.executeQuery(sql);
if(set.next()){
System.out.println("该ID号下有数据,请重新输入ID");
textField_3.setText("");
}else{
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
btnNewButton_1.setBounds(26, 147, 81, 23);
contentPane.add(btnNewButton_1);
}
}
增加界面
package Jdbc;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import com.mysql.jdbc.PreparedStatement;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.Statement;
import java.awt.event.ActionEvent;
public class Myjdbcinsert extends JFrame
private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Myjdbcinsert frame = new Myjdbcinsert();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Myjdbcinsert() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
textField = new JTextField();
textField.setBounds(150, 58, 66, 21);
contentPane.add(textField);
textField.setColumns(10);
textField_1 = new JTextField();
textField_1.setBounds(150, 112, 66, 21);
contentPane.add(textField_1);
textField_1.setColumns(10);
textField_2 = new JTextField();
textField_2.setBounds(150, 160, 66, 21);
contentPane.add(textField_2);
textField_2.setColumns(10);
JLabel lblNewLabel = new JLabel("name");
lblNewLabel.setBounds(73, 61, 54, 15);
contentPane.add(lblNewLabel);
JLabel lblNewLabel_1 = new JLabel("sex");
lblNewLabel_1.setBounds(73, 115, 54, 15);
contentPane.add(lblNewLabel_1);
JLabel lblNewLabel_2 = new JLabel("salary");
lblNewLabel_2.setBounds(73, 163, 54, 15);
contentPane.add(lblNewLabel_2);
JButton btnNewButton = new JButton("确定");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String username=textField.getText();
String sex=textField_1.getText();
String salary=textField_2.getText();
//方法调用及参数传递
boolean jdbc=Myjdbc.newInstance().insert(username, sex, salary);
if(jdbc){
System.out.println("添加成功");
}else{
System.out.println("有该用户请重新输入");
}
textField.setText("");
textField_1.setText("");
textField_2.setText("");
}
});
btnNewButton.setBounds(150, 215, 93, 23);
contentPane.add(btnNewButton);
}
}
//Connection con=Myjdbc.newInstance().getCon();
//PreparedStatement pre=con.prepareStatement();