jdbc 连接 mysql
2016-03-07 21:21
573 查看
jdbc 连接 mysql
一、安装
ubuntu(linux)下安装mysql$ sudo apt-get update
$ sudo apt-get install mysql-server mysql-client
安装完成后会让你设置一下root用户的密码,这里的root用户是mysql的root用户,和系统的root用户不同。
登录mysql
mysql -uroot -p
二、设置远程连接
主要设置两个点,1. mysql的监听端口(3306)是不是阻止的,主要看防火墙。
ubuntu防火墙设置 可以参考 http://blog.csdn.net/u012480384/article/details/50822304
windows条件下,自行百度一下,应该有很多。
2. mysql内部设置远程连接,并授权。
vim /etc/my.cnf
注释这一行:bind-address=127.0.0.1 ==> #bind-address=127.0.0.1
保存退出。
对应的window版本的 mysql 目录下 my.cnf 文件
设置mysql:
#登录mysql
mysql -uroot -p
#切换到 'mysql'数据库,修改远程连接的基本信息,保存在mysql数据库中,因此使用mysql数据库。
mysql> use mysql;
# *.* 用来设置 数据库和表名
# To 'root'@'%' 用来设置得到授权的用户和所在的ip。
# By 'root' 表示得到授权用户的登录密码
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
# 刷新授权,使之生效
mysql> flush privileges;
# 检验
mysql> select host,user from user;
三、 java 代码
首选需要引入mysql jdbc的jar包Java连接MySQL的最新驱动包下载地址
http://www.mysql.com/downloads/connector/j
java代码
package com.test.mysql; import com.mysql.jdbc.Connection; import com.mysql.jdbc.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.List; //MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值 // 避免中文乱码要指定useUnicode和characterEncoding // 执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定, // 下面语句之前就要先创建javademo数据库 public class MysqlHelper { // public static final String url = "jdbc:mysql://127.0.0.1:3306/student"; public static final String MYSQL_JDBC = "jdbc:mysql://192.168.1.164:3306/student"; public static final String MYSQL_DRIVER = "com.mysql.jdbc.Driver"; public static final String MYSQL_USER = "root"; public static final String MYSQL_PASSWORD = "root"; public static final String MYSQL_URL = MYSQL_JDBC + "?user=root&password=root&useUnicode=true&characterEncoding=UTF8"; public static final String TABLE_NAME = "student"; public static final String TABLE_COLUMN = TABLE_NAME + "(name)"; private Connection conn = null; // private PreparedStatement pst = null; public MysqlHelper() { try { Class.forName(MYSQL_DRIVER);// 指定连接类型 System.out.println("成功加载MySQL驱动程序"); conn = (Connection) DriverManager.getConnection(MYSQL_URL);// 获取连接 conn.setCharacterEncoding("utf8"); conn.setUseCompression(true); if (conn.getUseCompression()) { System.out.println("compress"); } else { System.out.println("UnCompress"); } // pst = conn.prepareStatement(sql);// 准备执行语句 } catch (Exception e) { e.printStackTrace(); } } private void execute(String sql) { if (null == sql || 0 == sql.length()) { System.out.println("argu wrong"); return; } System.out.println(sql); Statement stmt; try { stmt = conn.createStatement(); int result = stmt.executeUpdate(sql); if (-1 == result) { System.out.println("execute failure " + result); } else { System.out.println("execute successed " + result); } } catch (SQLException e) { e.printStackTrace(); } } private void executeQuery(String sql) { if (null == sql || 0 == sql.length()) { System.out.println("argu wrong"); return; } ResultSet rs = null; System.out.println(sql); Statement stmt; try { stmt = conn.createStatement(); rs = stmt.executeQuery(sql); System.out.println("\n############"); while (rs.next()) { System.out.println(rs.getInt("id") + " " + rs.getString("name")); } System.out.println("############\n"); } catch (SQLException e) { e.printStackTrace(); } } public void insert(String name) { if (null == name || 0 == name.length()) name = "default"; String sql = "insert into " + TABLE_COLUMN + " values('" + name + "')"; execute(sql); } public void insert(List<String> list) { if (null == list || 0 == list.size()) return; StringBuilder names = new StringBuilder(); int i = 0; for (i = 0; i < list.size() - 1; ++i) { names.append("('" + list.get(i) + "'), "); } names.append("('" + list.get(i) + "')"); String sql = "insert into " + TABLE_COLUMN + " values" + names.toString(); execute(sql); } public void delete(int id) { String sql = "delete from " + TABLE_NAME + " where id = " + id; execute(sql); } public void delete(String name) { if (null == name || 0 == name.length()) name = "default"; String sql = "delete from " + TABLE_NAME + " where name = '" + name + "'"; execute(sql); } public void deleteAll() { String sql = "delete from " + TABLE_NAME; execute(sql); } public void update(int id, String name) { if (null == name || 0 == name.length()) name = "default"; String sql = "update student set name='" + name + "' where id = " + id; execute(sql); } public void select(int id) { String sql = "select * from " + TABLE_NAME + " where id = " + id; executeQuery(sql); } public void selectAll() { String sql = "select * from " + TABLE_NAME; executeQuery(sql); } public void createTable() { createTable(TABLE_NAME); } public void createTable(String tableName) { if (null == tableName || 0 == tableName.length()) tableName = TABLE_NAME; if (!hasTable(tableName)) { String sql = "create table " + tableName + " (id int(4) not null primary key auto_increment,name varchar(20) not null)engine=innodb default charset=utf8"; execute(sql); } } public boolean hasTable(String tableName) { if (null == tableName || 0 == tableName.length()) tableName = TABLE_NAME; DatabaseMetaData meta = null; ResultSet result = null; try { meta = (DatabaseMetaData) conn.getMetaData(); result = meta.getTables(null, null, tableName, null); if (result.next()) return true; return false; } catch (SQLException e) { e.printStackTrace(); } return false; } public void dropTable(String tableName) { if (null == tableName || 0 == tableName.length()) tableName = TABLE_NAME; if (hasTable(tableName)) { String sql = "drop table " + tableName; execute(sql); } } public void dropTable() { dropTable(TABLE_NAME); } public void commit() { String sql = "commit"; execute(sql); } public void close() { try { this.conn.close(); // this.pst.close(); } catch (SQLException e) { e.printStackTrace(); } } }
测试代码:
package com.test.mysql; import java.util.Arrays; public class MysqlDemo { public static String[] names = {"apple", "bob", "carry", "david"}; public static void main(String[] args) throws Exception { // connect(); // create(); // drop(); // insert(); // update(); // delete(); // select(); allTest(); System.out.println("###########"); } public static void connect() { MysqlHelper mysql = new MysqlHelper(); mysql.close(); } public static void create() { MysqlHelper mysql = new MysqlHelper(); mysql.createTable(); mysql.close(); } public static void drop() { MysqlHelper mysql = new MysqlHelper(); mysql.dropTable(); mysql.close(); } public static void insert() { MysqlHelper mysql = new MysqlHelper(); mysql.insert(Arrays.asList(names)); mysql.close(); } public static void update() { MysqlHelper mysql = new MysqlHelper(); mysql.update(1, "xoxo"); mysql.close(); } public static void delete() { MysqlHelper mysql = new MysqlHelper(); mysql.delete("apple"); mysql.close(); } public static void select() { MysqlHelper mysql = new MysqlHelper(); mysql.selectAll(); mysql.close(); } public static void allTest() { MysqlHelper mysql = new MysqlHelper(); if (mysql.hasTable(MysqlHelper.TABLE_NAME)) { mysql.dropTable(); } mysql.createTable(); mysql.insert(Arrays.asList(names)); mysql.selectAll(); mysql.update(1, "xoxo"); mysql.selectAll(); mysql.delete(1); mysql.selectAll(); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } mysql.commit(); mysql.dropTable(); mysql.close(); } }
相关文章推荐
- MySQL批量SQL插入性能优化
- MySQL聚集函数
- 关于在windows下Mysql报error 1045错误的解决方法
- MySQL---增删改查
- GROUP_CONCAT对bigint类型参数的处理结果为BLOB类型
- 高性能Mysql:事务特性及实战
- 保障MySQL安全的14个最佳方法
- mysql服务启动不了
- mysql 性能优化方案
- [mysql语句] mysql 语句收集
- mysql 联结查询
- 使用mysql-proxy 快速实现mysql 集群 读写分离
- Mysql分库分表方案
- Mysql数据库主从心得整理
- MySQL主从同步问题集
- MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述
- mysql系列之二数据类型和运算符
- mysql基本操作
- MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
- MySQL 事务