mysql

一、安装mysql
mysql下载网址
注意事项:下载社区版commumunity的msi文件,双击该文件安装即可
                  选对话框选择custom,
                  并且后面之添加server的所有文件,其它按照标准格式下载

将数据库连接到navicat注意事项:
                  2059错误
                  1045错误
                 1045错误选择方法3,改密码的sql语句换一下不会报语法错误的sql语句

二、示范JDBC编程
1、数据库驱动
      ClassNotFoundException解决

package Capter13_mysql数据库与JDBC编程;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ConnMysql {

    public static void main(String[] args) throws SQLException, ClassNotFoundException{

        String driverName = "com.mysql.jdbc.Driver";//com.mysql.cj.jdbc.Driver
        String url = "jdbc:mysql://127.0.0.1:3306/mytest";//localhost:3306
        String user = "root";
        String password = "guozi";

        Class.forName(driverName);//加载驱动
        Connection conn = DriverManager.getConnection(url, user, password);//建立与数据库的连接
        Statement stmt = conn.createStatement();//创建Statement对象

        String sql = " select * from t_extr_dict where property = \"产品总体评价\" and feature_type = \"正面\"";// 
        ResultSet rs = stmt.executeQuery(sql);

        while(rs.next()){
            System.out.println(rs.getInt("id")+"\t"+rs.getString("domain")+"\t"
                              +rs.getString("feature")+"\t"+rs.getString("feature_type"));
        }

        rs.close();
        stmt.close();
        conn.close();

    }

}

2、配置文件
数据库连接信息保存在properties:
    eclipse中创建properties文件
    两种读取配置文件的方法

driverName = com.mysql.jdbc.Driver
url = jdbc:mysql://127.0.0.1:3306/mytest
user = root
password = ******
//数据库连接信息

package Capter13_mysql数据库与JDBC编程;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;


public class GetConnection {

    private static GetConnection instance;//创建缓存单例的成员变量

    public static final String inputFile = "resource/sql/my_sql_test.peoperties";
    private static String driver;
    private static String url;
    private static String user;
    private static String password;

    public static Properties props ; 
    public static Connection conn;


    private GetConnection() {};//将构造函数隐藏起来
    public static GetConnection getInstance() throws IOException, ClassNotFoundException, SQLException{
        if(instance==null){
            instance=new GetConnection();//用一个public创建一个类对象,用成员变量缓存起来
        }
        getConnection();
        return instance;
    }

    public static void getConnection() throws IOException, ClassNotFoundException, SQLException{

        getFactory();
        Class.forName(driver);
        conn = DriverManager.getConnection(url, user, password);

        System.out.println("数据库连接成功");
    }


    public static  void getFactory() throws IOException{

        InputStream b = new BufferedInputStream(new FileInputStream(inputFile));
        props = new Properties();
        props.load(b);

        driver = props.getProperty("driverName");
        url = props.getProperty("url");
        user =props.getProperty("user");
        password = props.getProperty("password");   
    }






    public static Connection getConn() {
        return conn;
    }
    public static void setConn(Connection conn) {
        GetConnection.conn = conn;
    }



}

3、执行DDL语句、创建数据库

package Capter13_mysql数据库与JDBC编程;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class ExcuteDDL {

    static Connection conn;
    static PreparedStatement p_stmt;

    public static void main(String[] args) throws ClassNotFoundException, IOException, SQLException{
        String sql = "CREATE TABLE test("
                + "id int auto_increment primary key,"
                + "name varchar(255) not null,"
                + "age int not null"
                + ")charset=utf8;";
        getConnection(sql);
        System.out.println("建表成功");
        conn.close();
        p_stmt.close();
    }


    public static void getConnection(String sql) throws ClassNotFoundException, IOException, SQLException {
        GetConnection connection = GetConnection.getInstance();
        conn = connection.getConn();
        p_stmt = conn.prepareStatement(sql);
        p_stmt.executeUpdate();//可执行DML\DDL语句
    }

}

4、执行DML语句、操作数据库

package Capter13_mysql数据库与JDBC编程;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class excuteDML {

    static Connection conn;
    static PreparedStatement p_stmt;

    public static void main(String[] args) throws ClassNotFoundException, IOException, SQLException{
        String sql = "insert into test(name,age)"
                + "values(\"james\",15),"
                + "(\"john\",20);";
        getConnection(sql);
        System.out.println("数据插入成功");
        conn.close();
        p_stmt.close();
    }


    public static void getConnection(String sql) throws ClassNotFoundException, IOException, SQLException {

        GetConnection connection = GetConnection.getInstance();
        conn = connection.getConn();
        p_stmt = conn.prepareStatement(sql);
        p_stmt.executeUpdate();//可执行DML\DDL语句
    }

}

5、使用excute方法执行SQL语句

package Capter13_mysql数据库与JDBC编程;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class excuteSQL {

    static Connection conn;
    static PreparedStatement p_stmt;

    public static void main(String[] args) throws ClassNotFoundException, IOException, SQLException{
        String sql = "insert into test(name,age)"
                + "values(\"jamnif\",19),"
                + "(\"julie\",18);";

        boolean ok_or_not = getConnection(sql);

        System.out.println("操作数据库成功?:"+ok_or_not);
        //false,但是数据库操作成功
        //因为只有第一个对象是ResultSet,才会返回true;如select操作
        //如果执行完后第一个结果是受影响的行数或其他情况,返回false

        if(ok_or_not){
            ResultSet rs = p_stmt.getResultSet();
            int count = p_stmt.getUpdateCount();

            for(int i=0;i<count;i++){
                System.out.println(rs.getInt("id")+"\t"+rs.getString("name")+"\t"+rs.getInt("age"));
            }
        }

        System.out.println("数据库操作完毕");

        p_stmt.close();
        conn.close();

    }

    public static boolean getConnection(String sql) throws ClassNotFoundException, IOException, SQLException {
        GetConnection connection = GetConnection.getInstance();
        conn = connection.getConn();
        p_stmt = conn.prepareStatement(sql);
        return p_stmt.execute();// 几乎可执行所有的SQL语句
    }



}

6、管理结果集

package Capter13_mysql数据库与JDBC编程;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class VarResultSet {

    static Connection conn;
    static PreparedStatement p_stmt;


    public static void main(String[] args) throws ClassNotFoundException, IOException, SQLException{

        String sql = "select * from test";
        ResultSet rs = getConnection(sql);

        rs.last();//将指针移动到最后一行
        int count = rs.getRow();//获得改行所处的行数
        for(int i=count;i>0;i--){
            rs.absolute(i);//将指针移动到改行
            System.out.println(rs.getString("name")+"\t"+rs.getInt("age"));
            rs.updateString(2, "学生名"+i);//修改指针所指行的特征列的值
            rs.updateRow();//提交修改
        }

        System.out.println("数据库操作完毕");

        p_stmt.close();
        conn.close();

    }

    public static ResultSet getConnection(String sql) throws ClassNotFoundException, IOException, SQLException {
        GetConnection connection = GetConnection.getInstance();
        conn = connection.getConn();

        //创建可滚动、可更新的结果集,默认的是静态的结果集
        p_stmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
        return p_stmt.executeQuery();// 可执行DML\DDL语句
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值