我是 Java 新手。
我想创建一个小型应用程序,它连接到 MySQL 并执行一些查询。
我真正的问题 - 连接到 mysql,并为其他类保留此连接,而不需要一次又一次打开连接。
我阅读了有关 MVC 和 OOP 的文档。但我仍然不明白如何解决这个问题。
正如我想象的那样,我应该在模型中继承一个数据库类,例如来自mypackage
的user
和messages
。但我无法想象它应该是什么样子。
我已经尝试在谷歌中搜索一些示例,但我发现只包含一个主类和数据库类的简单示例。
所以,我需要有人能为我解释一下
如果有任何帮助,我将不胜感激
用户类别
package mypackage;
class user {
public String getName() {
// return value from mysql
}
}
消息类
package mypackage;
class messages {
public String getMessage() {
// return value from mysql
}
}
数据库类
package database;
class db {
private String dbUri = "jdbc:mysql://";
private String dbDriver = "com.mysql.jdbc.Driver";
private Connection connection;
public boolean connect(String host, String base, String user, String pass)
{
try {
Class.forName(dbDriver);
String uri = dbUri + host + '/' + base;
connection = DriverManager.getConnection(uri, user, pass);
return true;
} catch (ClassNotFoundException e) {
e.printStackTrace();
return false;
// Could not find the database driver
} catch (SQLException e) {
e.printStackTrace();
return false;
// Could not connect to the database
}
}
}
主类
import mypackage.*;
import database.*;
class main
{
public static void main(String[] args)
{
database db = new database();
user usr = new user();
System.out.println(usr.getName());
messages msg = new messages();
System.out.println(msg.getMessage());
}
}
最佳答案
您的数据库类已经存储连接,因此只需创建方法即可检索它:
package database;
class Database {
private String dbUri = "jdbc:mysql://";
private String dbDriver = "com.mysql.jdbc.Driver";
private Connection connection;
public boolean connect(String host, String base, String user, String pass) {
try {
Class.forName(dbDriver);
String uri = dbUri + host + '/' + base;
connection = DriverManager.getConnection(uri, user, pass);
return true;
} catch (ClassNotFoundException e) {
e.printStackTrace();
return false;
// Could not find the database driver
} catch (SQLException e) {
e.printStackTrace();
return false;
// Could not connect to the database
}
}
public Connection getConnection() {
return connection;
}
}
在你的主要部分:
class Main
{
public static void main(String[] args)
{
Database db = new Database();
if (db.connect(/* parameters for database connection here */)) {
final Connection conn = db.getConnection();
// you can use conn for your queries. If they are in other classes, pass connection as parameter.
}
}
}
我试图使其变得简单,但您实际上应该使用工厂和单例模式来创建和存储连接,一旦创建,然后在应用程序中静态检索它。一旦您对这个概念感到满意,您还应该研究connection pooling作为 在评论中建议,例如使用 BoneCP .
关于 java 。在类之间共享 MySQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23290039/