Java 在solaris中使用jdbc连接到sybase
我正在努力学习如何使用jdbc。 通常,要连接到solaris上的sybase db,我使用:Java 在solaris中使用jdbc连接到sybase,java,jdbc,solaris,sybase,jconnect,Java,Jdbc,Solaris,Sybase,Jconnect,我正在努力学习如何使用jdbc。 通常,要连接到solaris上的sybase db,我使用: isql -Usa -Pxxxxxx -Dxxxxxx 它通过上面的方法连接到数据库,我可以立即执行查询 现在我正试图用java做一件类似的事情 下面是我的代码 public class SKRSample { public static void main(String args[]) { try { Class.forName("com.sybase.
isql -Usa -Pxxxxxx -Dxxxxxx
它通过上面的方法连接到数据库,我可以立即执行查询
现在我正试图用java做一件类似的事情
下面是我的代码
public class SKRSample
{
public static void main(String args[])
{
try
{
Class.forName("com.sybase.jdbc.SybDriver");
}
catch (ClassNotFoundException cnfe)
{
System.err.println("Error loading driver: " + cnfe);
}
try
{
String host = "172.16.65.33";
String dbName = "bsmdb";
int port = 1234;
String url = "jdbc:sybase:Tds:" + host + ":" + port + ":" + "?SERVICENAME=" + dbName;
for (int n = 0; n<args.length; n++) {
if (args[n].equals("-u")) user = args[++n];
else if (args[n].equals("-p")) password = args[++n];
else throw new IllegalArgumentException("Unknown argument.");
}
Connection con = DriverManager.getConnection(url, user, password);//here is the error.
我得到的错误是:
Unexpected exception : java.sql.SQLException: No suitable driver found for jdbc:sybase:Tds:172.16.65.33:1234:?SERVICENAME=bsmdb, sqlstate = 08001
我怀疑主机不正确、端口不正确或我正在构建的url不正确。如果主机名不正确,如何获取主机名。如果问题存在,如何获取端口号。
但是我不确定这个问题。有谁能告诉我问题到底出在哪里。看来JDBC url格式是错误的。
正确的格式是jdbc:jtds:sybase://[:][/]您需要同时使用正确的jdbc驱动程序和连接字符串。例如,您可以同时使用“com.sybase.jdbc2.jdbc.SybDriver”(在jconn2.jar中)和“jdbc:sybase:Tds:MyDbComputerNameOrIP:2638”。请查看下页以了解更多选项 在代码中,似乎在连接URL中添加了额外的“:”。远程端口号后面的“:”。以下两个连接URL应与“com.sybase.jdbc.SybDriver”一起使用 或
您必须下载驱动程序并执行类,以便它在您指定的路径中使用驱动程序。class.forName(“net.sourceforge.jtds.jdbc.driver”)
在类路径中使用JTDS驱动程序jar可能有点晚了,但我还是遇到了同样的问题,花了很多时间进行研究,所以我将在这里给出一些结果: 一,。我们需要在代码中包括驱动程序类以及java.sql:
导入com.sybase.jdbc3.jdbc.SybDriver
导入java.sql.*
2.我们需要使用类路径中的驱动程序路径运行javac(我这里有jconn3.jar-/usr/local/localagent/jar/jconn3.jar):
javac-cp“/usr/local/localagent/jar/*”test\u conn.java
3.我们需要在运行类时放置相同的类路径:
java-cp.“:/usr/local/localagent/jar/*”测试连接
我的test_conn.java代码如下:
import com.sybase.jdbc3.jdbc.SybDriver; import java.sql.*; public class test_conn { public static void main(String[] args) { String host = "myhost"; String url = "jdbc:sybase:Tds:"+host+":4100"; String username = "username"; String password ="password"; String dbname ="dbname"; SybDriver sybDriver = null; Connection conn; try { sybDriver=(SybDriver)Class.forName("com.sybase.jdbc3.jdbc.SybDriver").newInstance(); System.out.println("Driver Loaded"); conn = DriverManager.getConnection( "jdbc:sybase:Tds:"+host+":4100?SERVICENAME="+dbname, username, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("sp_helpdb"); rs.next(); System.out.println(rs.getString(1)); conn.close(); } catch (Exception ex) { System.out.println(ex); } } } 导入com.sybase.jdbc3.jdbc.SybDriver; 导入java.sql.*; 公共等级考试{ 公共静态void main(字符串[]args){ 字符串host=“myhost”; String url=“jdbc:sybase:Tds:+host+”:4100”; 字符串username=“username”; 字符串password=“password”; 字符串dbname=“dbname”; SybDriver SybDriver=null; 连接接头; 尝试 { sybDriver=(sybDriver)Class.forName(“com.sybase.jdbc3.jdbc.sybDriver”).newInstance(); System.out.println(“驱动程序加载”); conn=DriverManager.getConnection(“jdbc:sybase:Tds:+host+”:4100?SERVICENAME=“+dbname,username,password”); 语句stmt=conn.createStatement(); 结果集rs=stmt.executeQuery(“sp_helpdb”); rs.next(); System.out.println(rs.getString(1)); 康涅狄格州关闭(); } 捕获(例外情况除外) { 系统输出打印项次(ex); } } }
这对我很有效,所以我希望这能有所帮助。
例外情况是什么?您的驱动程序版本是什么?jConnect7?跟踪是:加载驱动程序时出错:java.lang.ClassNotFoundException:com.sybase.jdbc2.jdbc.SybDriver以下任何一项都可能引发SQLException。打开连接。您能在jdbc驱动程序JAR中找到该类吗?或者使用其他版本,例如jdbc3/jdbc4。你能用我在上面发布的连接URL尝试com.sybase.jdbc.SybDriver吗?发布异常跟踪请使用、或?正在尝试清理标签。。。
String url = "jdbc:sybase:Tds:" + host + ":" + port + "?SERVICENAME=" + dbName;
String url = "jdbc:sybase:Tds:" + host + ":" + port + "/" + dbName;
import com.sybase.jdbc3.jdbc.SybDriver;
import java.sql.*;
public class test_conn {
public static void main(String[] args) {
String host = "myhost";
String url = "jdbc:sybase:Tds:"+host+":4100";
String username = "username";
String password ="password";
String dbname ="dbname";
SybDriver sybDriver = null;
Connection conn;
try
{
sybDriver=(SybDriver)Class.forName("com.sybase.jdbc3.jdbc.SybDriver").newInstance();
System.out.println("Driver Loaded");
conn = DriverManager.getConnection( "jdbc:sybase:Tds:"+host+":4100?SERVICENAME="+dbname, username, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("sp_helpdb");
rs.next();
System.out.println(rs.getString(1));
conn.close();
}
catch (Exception ex)
{
System.out.println(ex);
}
}
}