Java 在solaris中使用jdbc连接到sybase

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.

我正在努力学习如何使用jdbc。 通常,要连接到solaris上的sybase db,我使用:

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); } } }