与mysql的jdbc建立连接的最佳方法是什么? 并执行简单的声明。怎么做? 谢谢。
答案 0 :(得分:3)
MySQL / JDBC的基本样板如下所示:
获取连接:
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://databaseName");
执行声明:
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * from tableName");
while (rs.next()) {
System.out.println(rs.getString(1));
}
关闭语句和连接:
rs.close();
stmt.close();
conn.close();
您只需要确保已安装驱动程序和/或在CLASSPATH中。
答案 1 :(得分:2)
这是二十一世纪 - 使用JPA(ORM)实现。但如果你坚持要回到金属上(冒着投票的风险) -
有很多方法可以从某个驱动程序获取JDBC连接。使用具有硬连线类名的反射是最常见的,也许是大多数脑损伤。如果您要对类名称进行硬连线处理,您可能会获得正常代码的好处(编译器捕获错别字,没有无关的异常处理,更易于阅读,显式依赖,更好的工具支持等)。
还要养成安全清理资源的习惯。
所以:
public static void main(String[] args) throws SQLException {
Driver driver = new com.mysql.jdbc.Driver();
Connection connection = driver.connect(
"jdbc:mysql://mydatabase",
new java.util.Properties() {{
put("user", "fred");
}}
);
try {
PreparedStatement statement = connection.prepareStatement(
"SELECT insideLeg FROM user WHERE name=?"
);
try {
statement.setString(1, "jim");
ResultSet results = statement.executeQuery();
try {
if (results.next() {
System.out.println("= "+results.getLong(1));
} else {
System.out.println("Missing.");
}
} finally {
results.close();
}
} finally {
statement.close();
}
} finally {
connection.close();
}
}
真是一团糟!它甚至还没有使用交易。是的,使用ORM。这些天他们非常受人尊敬。
你不需要为每一个声明做所有这些。您不希望每次都创建实例化驱动程序。特别是围绕习语的执行是有用的。
答案 2 :(得分:1)
以下是creating a JDBC connection的sun文档。从那里很容易get access to a Statement object并运行一些简单的SQL。
对于生产级系统,您可能还需要创建connection pool。
答案 3 :(得分:1)
这取决于你的情况。
如果您只需要从独立应用程序执行某些查询,那么您应该使用单一连接,如:
Class.forName ("yourDriverName");
Connection cn = DriverManager.getConnection ("db url");
Statement st = cn.createStatement ();
ResultSet rs = st.executeQuery ("select * from foo");
while (rs.next()) {
doSmth ();
}
rs.close ();
st.close ();
cn.close ();
但是,如果您正在开发真正的应用程序(特别是Web应用程序),那么请使用DataSource。阅读数据库和Web服务器的手册如何配置数据源。 DataSource允许您使用连接池 - 它可以提高性能。
配置DataSource并不困难。
答案 4 :(得分:0)
使用Spring Framework的JDBC抽象框架 - 您需要做的就是创建一个上下文XML文件,并使用JDBC模板类。只需几行XML + Java代码即可实现。优点是保持连接细节不受编译Java的影响。看到: http://www.springbyexample.org/examples/simple-spring-jdbc-template.html