gpt4 book ai didi

java - JTDS 未连接到正确的数据库

转载 作者:太空宇宙 更新时间:2023-11-04 06:25:28 25 4
gpt4 key购买 nike

我正在使用 JTDS 连接到 MS SQL Server。与数据库的连接没有问题,但是当我尝试执行语句时,出现数据库“java”不存在异常。

连接字符串:

conn = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost;DatabaseName=MyDatabase;user=testuser;password=testpassword");

尝试执行脚本:

private void runStatement(String scriptLocation) {
if(scriptLocation == null) {
return;
}

try {
InputStream is = getClass().getClassLoader().getResourceAsStream(scriptLocation);
String query = is.toString();
is.close();

Statement stmt = conn.createStatement();
stmt.executeQuery(query);
} catch(IOException | SQLException ex) {
log.warning(ex.getMessage());
}
}

堆栈跟踪:

WARNING: Database 'java' does not exist. Make sure that the name is entered correctly.
java.sql.SQLException: Database 'java' does not exist. Make sure that the name is entered correctly.
at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:372)
at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2988)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2421)
at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:671)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:505)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeQuery(JtdsStatement.java:1427)
at com.exampe.MyJTDSConnection.runStatement(MyJTDSConnection.java:238)
at com.exampe.MyJTDSConnection.loadPageTitle(MyJTDSConnection.java:208)
at com.exampe.MyJTDSConnection.runTesting(MyJTDSConnection.java:69)
at com.exampe.SeleniumTesting.runTest(SeleniumTesting.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...

最佳答案

正如您问题的评论中所提到的,将 .toString() 方法应用于 InputStream 对象不会读取 InputStream。相反,它只返回对象本身的字符串表示形式,而不是对象包含的内容。

例如,我的 Java 项目有一个名为“script.sql”的资源文件,其中包含:

SELECT @@VERSION

以下代码比较了仅对对象执行 .toString() 与使用 Apache Commons IO 的结果实际上读取InputStream到字符串中:

package resourceTest;

import java.io.InputStream;
import org.apache.commons.io.IOUtils;

public class ResourceTestMain {

public static void main(String[] args) {
try (InputStream is = ResourceTestMain.class.getClassLoader().getResourceAsStream("resources/script.sql")) {
String toStringValue = is.toString();
String contents = IOUtils.toString(is, "UTF-8");
is.close();
System.out.println("is.toString() returned:");
System.out.println(" " + toStringValue);
System.out.println();
System.out.println("IOUtils.toString(is, \"UTF-8\") returned:");
System.out.println(" " + contents);
} catch (Exception e) {
e.printStackTrace(System.out);
}
}

}

结果是:

is.toString() returned:
java.io.BufferedInputStream@804a77

IOUtils.toString(is, "UTF-8") returned:
SELECT @@VERSION

关于java - JTDS 未连接到正确的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26847309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com