天天看点

JDBC小Demo(原创)

初始化部分以及调用到的方法

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);
    }

}      
JDBC小Demo(原创)

增加界面

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();      
JDBC小Demo(原创)