作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
还有,谁能展示一下与原生代码的区别?例如,使用Java连接数据库并使用单例设计模式来完成。使用它有什么好处?
最佳答案
您的连接实例应该被保留,并且您只能通过 getConnection() 方法检索您的连接(单例模式的 getInstance)
这是示例代码;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBUtil {
private final String HOST;
private final String PORT;
private final String DB_NAME;
private final String USER;
private final String PASSWORD;
private final String TARGET_TABLE;
private final String COLUMN_NAME;
private final String CONNECTION_STRING;
private final String SELECT_ALL_SQL;
private final String SELECT_COLUMN_SQL;
private final String INSERT_SQL;
private Connection conn;
public DBUtil() {
// Database Parameters
HOST = "your_host_here";
PORT = "your_port_number_here";
DB_NAME = "your_database_name";
USER = "your_databse_user_here";
PASSWORD = "your_database_password_here";
// Database Tables
TARGET_TABLE = "your_table_name";
COLUMN_NAME = "your_tables_column_name";
CONNECTION_STRING = String.format("jdbc:mysql://%s:%s/%s", HOST, PORT, DB_NAME);
// Query Strings
SELECT_ALL_SQL = String.format("SELECT * FROM %s.%s WHERE id=?", DB_NAME, TARGET_TABLE);
SELECT_COLUMN_SQL = String.format("SELECT %s FROM %s.%s WHERE id=?", COLUMN_NAME, DB_NAME, TARGET_TABLE);
INSERT_SQL = String.format("INSERT INTO %s.%s (id, name) values (?, ?)", DB_NAME, TARGET_TABLE);
printConfiguration();
conn = null;
}
private void printConfiguration() {
System.out.println("******************************************************************************");
System.out.println("DB_NAME : " + DB_NAME);
System.out.println("USERNAME : " + USER);
System.out.println("PASSWORD : " + PASSWORD);
System.out.println("CAMT TABLE : " + TARGET_TABLE);
System.out.println("******************************************************************************");
}
private void getConnection() {
if(conn != null) {
System.out.println("Connection already established with db");
return;
}
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(CONNECTION_STRING, USER, PASSWORD);
} catch (ClassNotFoundException e) {
System.out.println("Connection FAILED");
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void closeConnection() {
if(conn == null) {
return;
}
try {
conn.close();
conn = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
public int insert(int id, String column) {
int rowNum;
getConnection();
PreparedStatement preparedStatement = null;
try {
preparedStatement = conn.prepareStatement(INSERT_SQL);
System.out.println("SQL: " + INSERT_SQL);
preparedStatement.setInt(1, id);
preparedStatement.setString(2, column);
rowNum = preparedStatement.executeUpdate();
System.out.println(rowNum + " rows are inserted");
return rowNum;
} catch (SQLException e) {
e.printStackTrace();
}
return -1;
}
public Model getModel(int id) {
getConnection();
PreparedStatement preparedStatement = null;
Model model = new Model();
try {
preparedStatement = conn.prepareStatement(SELECT_ALL_SQL);
System.out.println("SQL: " + SELECT_ALL_SQL);
preparedStatement.setInt(1, id);
ResultSet rs = preparedStatement.executeQuery();
if(rs.next()) {
model.setId(rs.getInt("id"));
model.setName(rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return model;
}
public String getName(int id) {
getConnection();
PreparedStatement preparedStatement = null;
String name = null;
try {
preparedStatement = conn.prepareStatement(SELECT_COLUMN_SQL);
System.out.println("SQL: " + SELECT_ALL_SQL);
preparedStatement.setInt(1, id);
ResultSet rs = preparedStatement.executeQuery();
if(rs.next()) {
name = rs.getString("name");
}
} catch (SQLException e) {
e.printStackTrace();
}
return name;
}
}
public class Model {
private int id;
private String name;
public Model() {}
public Model(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
关于java - 如何使用单例设计模式java连接到SQL数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47368432/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!