【问题标题】:Call stored procedure from inside Java class and write to console?从Java类内部调用存储过程并写入控制台?
【发布时间】:2014-07-19 08:03:25
【问题描述】:

我希望能够从 Microsoft SQL Server 数据库调用存储过程并将结果列出到控制台(即开始)。在某人我想将所有这些数据放到 JTable 或 Web 中,但首先我会很高兴能将其显示到控制台。

我认为问题在于我不能(或者可能不知道如何)建立与数据库的连接。

如何连接到我的 Microsoft SQL Server 数据库? (我以前看过它,我认为它是 4 行代码。我希望它可以在我的机器上运行,这样我就可以开始测试一些存储过程。

Java 代码:

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

public class SQLServerTest {
    private ResultSet[] yourResult;

    private void showSuppliers(ResultSet[] rs) throws SQLException {
            Connection con =
                                DriverManager.getConnection("jdbc:default:connection");
            Statement stmt = null;

            String query = "select * from PeopleOne";

            stmt = con.createStatement();
            rs[0] = stmt.executeQuery(query);
        }

     private void ShowResultsToConsole(ResultSet[] rs) throws SQLException {
      for (ResultSet r : rs) {
        int c = 0; 
        r.getString(c);
      }
    }

    public static void main(String[] p) throws SQLException {
         SQLServerTest temp = new  SQLServerTest();
         temp.showSuppliers(temp.yourResult);
             temp.ShowResultsToConsole(temp.yourResult);
    }

}

【问题讨论】:

  • 什么阻止你调用存储过程如果该过程包含选择语句,它可以使用执行查询来调用,对于从数据库连接到 sql server 的部分我说什么阻止使用谷歌和我会建议stackoverflow.com/questions/19047414/…

标签: java sql-server jdbc


【解决方案1】:

试试这样的。

public class DbTest {

static final String DRIVER_CLASS = "net.sourceforge.jtds.jdbc.Driver";
static final String DB_URL = "jdbc:jtds:sqlserver://127.0.0.1:1433/mydb";
static final String DB_USER = "username";
static final String DB_PASS = "password";

public static void testQuery() throws ClassNotFoundException, SQLException {

    Class.forName(DRIVER_CLASS);
    Connection jdbcConnection = DriverManager.getConnection(DB_URL,
            DB_USER, DB_PASS);

    ResultSet rs = jdbcConnection.createStatement().executeQuery(
            "SELECT TOP 10 field_name FROM table_name");

    while (rs.next()) {
        System.out.println(rs.getString("field_name"));
    }

}

public static void main(String args[]) throws Exception {
    testQuery();
}

这假设您的类路径中有jTDS JDBC 驱动程序。

如果您需要改用Microsoft JDBC Driver,您应该将它放在您的类路径中,并在代码中更改以下内容。

static final String DRIVER_CLASS = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
static final String DB_URL = "jdbc:sqlserver://localhost:1433;databaseName=mydb";

您应该始终按照Java / JDBC: Best design pattern to close database connection when exception occurs 中的说明正确关闭资源

【讨论】:

  • 我认为它在类路径中,但我如何确定它在类路径中?这是 Java 中我不需要经常做的事情。
  • 在密码部分,我看到的只是登录名,看起来像这样。 WY/abcd12345 并且没有密码。这有什么不同吗?
  • 您在运行代码时是否遇到特定错误或堆栈跟踪?如果是这样,你可以发布它吗?要设置类路径,请参阅stackoverflow.com/questions/6434213/…。例如,您可以使用dbeaver.jkiss.org 之类的外部数据库客户端连接到您的数据库吗?
猜你喜欢
  • 2023-01-17
  • 1970-01-01
  • 2021-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多