4.java,mysql jdbc简单实现(1)

1. mysql jdbc

sql语言分类:
  • 数据定义语言(DDL):create,alert,drop
  • 数据操作语言(DML):insert,update,delete等语句
  • 数据查询语言(DQL):select 等
  • 数据控制语言(DCL):grant,revoke,commit,rollback等。
sql基本操作:

创建表: create table xx(id varchar(255) primarily key,name varchar(255));
删除表:drop table xx;
插入数据:insert into xx values(‘01’, ‘jack’);
修改表:alert table xx add yyy varchar(255)

2. 建立mysql连接

1.sql 连接都需要数据库驱动mysql中的就是:mysql-connector-java-5.0.4-bin.jar;
在java中使用mysql数据库时都需要添加该jar包到path中;
(ps:mysql 5.0以上才支持存储过程和触发器)
2.driver加载

// 通过反射
String clazz = "com.mysql.jdbc.Driver";
// 装载驱动类
Class.forName(clazz);

3.connection的参数

String url = ""
                + "jdbc:mysql://localhost:3306/myjdbc?"
                + "user=root&"
                + "password=xxxxxx";
connection = DriverManager.getConnection(url);
  • jdbc:mysql://localhost:3306 使用的是本地数据库的3306端口;
  • myjdbc 使用的具体数据库;
  • user=root 数据库用户;
  • password=xxxxxx 数据用户密码;
其他属性
  • autoReconnect 连接失败后重新连接(boolean)
  • maxRows 查询结果的最大行数
  • userUnicode 使用unicode编码(boolean 一般都是utf-8,配合下一个属性使用)
  • characterEncoding 使用的编码(utf-8)
  • maxReconnect 最大重新连接数
示例
public class SimpleJDBCConnection {
    public static Connection getConnection(){
        java.sql.Connection connection = null;
        String clazz = "com.mysql.jdbc.Driver";
        String url = ""
                + "jdbc:mysql://localhost:3306/myjdbc?"
                + "user=root&"
                + "password=xxxx";
        try {
            // 装载数据库驱动
            Class.forName(clazz);
            connection = DriverManager.getConnection(url);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

        return connection;
    }
}

3. 实体对象

实体对象主要用于对应数据库的表的数据
  • 使用简单的person(PS:写好字段后再eclipse中使用”Alt+Shift+S“出来的很多方便的快捷代码生成,比如常用的getter和setter,toString()方法)
public class Person {
    public String pid;
    public String pname;
    public int psex;
    public String getPid() {
        return pid;
    }
    public void setPid(String pid) {
        this.pid = pid;
    }
    public String getPname() {
        return pname;
    }
    public void setPname(String pname) {
        this.pname = pname;
    }
    public int getPsex() {
        return psex;
    }
    public void setPsex(int psex) {
        this.psex = psex;
    }
    @Override
    public String toString() {
        return "Person [pid=" + pid + ", pname=" + pname + ", psex=" + psex
                + "]";
    }

}

4. 测试类

在测试类中只使用简单的陈述性语句statement来查询
public class TestJDBC {
    public static void main(String[] args)  {
        try {
            // 获取connection 连接
            Connection connection = SimpleJDBCConnection.getConnection();
            // 查询语句
            Statement statement = connection.createStatement();
            // 建立sql对象执行查询
            ResultSet resultSet = statement.executeQuery("SELECT * FROM person;");
            // 存储对象
            Collection<Person> persons = new ArrayList<Person>();
            // 循环取值
            Person person = new Person();
            while(resultSet.next()){
                person.setPid(resultSet.getString("pid"));
                person.setPname(resultSet.getString("pname"));
                person.setPsex(resultSet.getInt("psex"));
                persons.add(person);
            }
            // 关闭连接
            statement.close();
            System.out.println("查询结果:\n" + persons);
        } catch (Exception e) {
            System.out.println("数据库错误LOG:");
            e.printStackTrace();
        }

    }
}
  • resultset 结果集
    是查询返回结果,包含多行数据,主要的操作方法是对getString、getInt、getLong、getObject等
  • excute

同时发布在:shaoxiaobin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client jdk.internal.reflect.GeneratedConstructorAccessor15.newInstance(Unknown Source) java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943) com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4113) com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1308) com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336) com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369) com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153) com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792) com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) jdk.internal.reflect.GeneratedConstructorAccessor12.newInstance(Unknown Source) java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381) com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305) com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1375) com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1431) com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844)
最新发布
06-13

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值