MySQL: 基于 jdbc 远程操作

              /************************************************************

                                                 声明:如需转载,请注明出处!

              ************************************************************/


在我的 MySQL 系列博客里面,分享过如何使用 jdbc 连接 mysql 数据库。


点击这里,查看详情。


如果耐心将那篇博客的例子,自己动手实践一下,那麽这篇博客会很快让你喜欢。


如果想远程连接 mysql,需要记住:mysql 允许被远程访问。


1. 启动 MySql


sudo /etc/init.d/mysql.server start


mysql -u root -p


2. 增加一个用户


use mysql(mysql 是自带的数据库文件,里面有张表 user)


执行下面的两条命令:




解释:


grant all privileges on  *.*  to  'mark'  @'%'  identified  by  '123456';


授予用户 mark,密码 123456,可以使用任意 ip (%)访问任何数据库(*.*) .


查看表中数据:




可以看出 mark 这个用户创建了。

password 是被加密了的。host 为 % 表示通配任意 ip(ipv4)。


 3. 命令行验证


ctrl + c 停止 mysql 交互模式


ifconfig 查看本机的 ip:192.168.1.102


mysql -h 192.168.1.102 -umark -p123456


如果进入交互模式,就 ok.


新建一个数据库文件 mydb 和表 mytable:


    


4. jdbc


eclipse --- New java project


    


注意:

要将 jdbc(connector-java-5.1.6-bin.jar 版本) 的 jar 文件 Build path 到这个项目。


MySqlUtil.java


package net.mark.util;

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

public class MySqlUtil {

	public static Connection openConnection(String url, String user,
			String password) {
		Connection conn = null;
		try {
			final String DRIVER_NAME = "com.mysql.jdbc.Driver";
			Class.forName(DRIVER_NAME);
			conn = DriverManager.getConnection(url, user, password);
		} catch (ClassNotFoundException e) {
			conn = null;
		} catch (SQLException e) {
			conn = null;
		}

		return conn;
	}

	public static void query(Connection conn, String sql) {

		if (conn == null) {
			return;
		}

		Statement statement = null;
		ResultSet result = null;

		try {
			statement = conn.createStatement();
			result = statement.executeQuery(sql);
			if (result != null && result.first()) {
				int idColumnIndex = result.findColumn("id");
				int nameColumnIndex = result.findColumn("name");
				while (!result.isAfterLast()) {
					System.out.println("------------------");
					System.out.print("id " + result.getString(idColumnIndex) + "\t");
					System.out
							.println("name " + result.getString(nameColumnIndex));
					result.next();
				}
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (result != null) {
					result.close();
					result = null;
				}
				if (statement != null) {
					statement.close();
					statement = null;
				}

			} catch (SQLException sqle) {

			}
		}
	}

	public static boolean execSQL(Connection conn, String sql) {
		boolean execResult = false;
		if (conn == null) {
			return execResult;
		}

		Statement statement = null;

		try {
			statement = conn.createStatement();
			if (statement != null) {
				execResult = statement.execute(sql);
			}
		} catch (SQLException e) {
			execResult = false;
		}

		return execResult;
	}
}


Main.java


package net.mark;

import java.sql.Connection;

import net.mark.util.MySqlUtil;


public class Main {
	private static final String URL = "jdbc:mysql://192.168.1.102/mydb";
	private static final String USER = "mark";
	private static final String PASSWORD = "123456";

	public static void main(String[] args) throws Exception {
		Connection conn = MySqlUtil.openConnection(URL, USER, PASSWORD);
		System.out.println("All users info:");
		MySqlUtil.query(conn, "select * from mytable");
	}

}


Run as java application:


    


还可以插入、删除或者更新数据:


package net.mark;

import java.sql.Connection;

import net.mark.util.MySqlUtil;


public class Main {
	private static final String URL = "jdbc:mysql://192.168.1.102/mydb";
	private static final String USER = "mark";
	private static final String PASSWORD = "123456";

	public static void main(String[] args) throws Exception {
		Connection conn = MySqlUtil.openConnection(URL, USER, PASSWORD);
		System.out.println("All users info:");
		MySqlUtil.execSQL(conn, "insert into mytable values(56,'小李')");
		MySqlUtil.execSQL(conn, "update mytable set name='mark' where id=1");
		MySqlUtil.execSQL(conn, "delete from mytable where id=6");
		MySqlUtil.query(conn, "select * from mytable");
	}

}






上面的访问是基于局域网通过 jdbc 操作 mysql。


远程访问 mysql,采用上面的方式也是可以的,但是速度不是很快。






评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值