有如下问题:
只用记事本、jdk,没有MySQL驱动,知道远程MySQL的ip、用户、密码,怎么把它一个表的数据弄到本地?
求解
面试的问题一个比一个奇葩.............. 思路如下次
使用记事本创建一个Java源代码文件
在Java文件中,引入必要的Java IO类如下
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
在main
方法中,设置远程MySQL数据库的连接信息,包括IP、端口、用户名、密码等
// 连接信息
String url = "jdbc:mysql://远程MySQL服务器IP:端口号/数据库名";
String username = "用户名";
String password = "密码";
创建一个用于保存数据的文本文件,例如data.txt
:
String filePath = "data.txt";
建立与MySQL数据库的连接,并执行SQL查询语句,将结果写入文本文件:
执行shell
如有帮助给个采纳谢谢谢v
远程mysql没有驱动也可以登录,登录之后导出就行了
1、新建用户
MySQL -u root -p
CREATE USER 'test'@'localhost' IDENTIFIED BY '1234'; #本地登录
CREATE USER 'test'@'%' IDENTIFIED BY '1234'; #远程登录
quit
mysql -u test -p #测试是否创建成功
2. 授权test用户拥有testDB数据库的所有权限
grant all privileges on testDB.* to “test”@”localhost” identified by “1234”;
flush privileges; #刷新系统权限表
3.指定部分权限给用户:
grant select,update on testDB.* to “test”@”localhost” identified by “1234”;
flush privileges; #刷新系统权限表
4.授权test用户拥有所有数据库的某些权限
grant select,delete,update,create,drop on . to test@”%” identified by “1234”; #”%” 表示对所有非本地主机授权,不包括localhost
flush privileges;
5.修改指定用户密码
update mysql.user set authentication_string=password(“新密码”) where User=”test” and Host=”localhost”;
flush privileges;
问题解答:
根据你给出的条件,只有记事本和JDK,没有MySQL驱动程序。但你知道远程MySQL数据库的IP地址、用户名和密码。以下是将远程数据库中的一个表的数据导入到本地的解决方案:
首先,你需要从MySQL官方网站下载并安装MySQL Connector/J驱动程序,这是用于连接MySQL数据库的Java驱动程序。将下载的驱动程序放置在计算机上可存取的位置。
创建一个Java项目文件,导入刚刚下载的MySQL Connector/J驱动程序的jar包。
在Java项目中,使用JDBC来连接远程MySQL数据库。以下是一个简单的示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
public class Main {
public static void main(String[] args) {
String remoteIP = "远程MySQL数据库的IP地址";
String dbName = "数据库名";
String tableName = "表名";
String username = "用户名";
String password = "密码";
try {
// 加载驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");
// 创建连接
Connection connection = DriverManager.getConnection("jdbc:mysql://" + remoteIP + "/" + dbName, username, password);
// 导入数据的代码
// 关闭连接
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上述代码中,你需要将"远程MySQL数据库的IP地址"、"数据库名"、"表名"、"用户名"和"密码"替换成实际的值。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
String remoteIP = "远程MySQL数据库的IP地址";
String dbName = "数据库名";
String remoteTableName = "远程表名";
String localTableName = "本地表名";
String username = "用户名";
String password = "密码";
try {
// 加载驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");
// 创建连接
Connection remoteConnection = DriverManager.getConnection("jdbc:mysql://" + remoteIP + "/" + dbName, username, password);
Connection localConnection = DriverManager.getConnection("jdbc:mysql://localhost/" + dbName, username, password);
// 查询远程表中的数据
Statement remoteStatement = remoteConnection.createStatement();
ResultSet remoteResultSet = remoteStatement.executeQuery("SELECT * FROM " + remoteTableName);
// 将查询结果插入到本地表中
Statement localStatement = localConnection.createStatement();
while (remoteResultSet.next()) {
int id = remoteResultSet.getInt("id");
String name = remoteResultSet.getString("name");
// 获取其他字段的数据
String insertQuery = "INSERT INTO " + localTableName + " (id, name, ...) VALUES (" + id + ", '" + name + "', ...)";
localStatement.executeUpdate(insertQuery);
}
// 关闭连接
remoteResultSet.close();
remoteStatement.close();
remoteConnection.close();
localStatement.close();
localConnection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上述代码中,你需要将"远程MySQL数据库的IP地址"、"数据库名"、"远程表名"、"本地表名"、"用户名"和"密码"替换成实际的值,并根据你的表结构调整插入语句。
请注意,以上代码仅为示例,需要根据实际情况进行调整和扩展。
希望以上解决方案对你有帮助。如果你有任何疑问,请随时提问。