【问题标题】:import com.sybase.jdbc4.jdbc.*; error导入 com.sybase.jdbc4.jdbc.*;错误
【发布时间】:2014-04-24 21:11:54
【问题描述】:

我正在编写我的第一个 java 程序,它应该连接到数据库。我已经成功创建了 JDBC 驱动程序(4.0 版),并且 ping 成功。接下来,我正在尝试下面的代码,但它不起作用。我发现我需要导入 com.sybase.*;为了那个原因。这给出了编译错误,指出无法解析导入。 (我对java很陌生。这是我的第一个程序,所以非常感谢任何帮助)。谢谢。我正在使用 sybase 15.x。

enter code here

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.sybase.jdbc4.jdbc.*;    --> this is where I see error. 


public class DBConnTest {
       // JDBC driver name and database URL
       //static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
        //static final String DB_URL = "jdbc:mysql://localhost/EMP";
        static final String JDBC_DRIVER = "Sybase15";
        static final String DB_URL = "jdbc:sybase:Tds:<IP>:<PORT>/<DB>?CHARSET=iso_1";

       //  Database credentials
       static final String USER = "abc";
       static final String PASS = "def";

       public static void main(String[] args) {
       Connection conn = null;
       Statement stmt = null;
       try{
          //STEP 2: Register JDBC driver
          //Class.forName("com.sybase.jdbc4.jdbc.SybDriver");
           Class.forName("com.sybase.jdbc4.jdbc.SybDriver");

          //STEP 3: Open a connection
          System.out.println("Connecting to database...");
          conn = DriverManager.getConnection(DB_URL,USER,PASS);

          //STEP 4: Execute a query
          System.out.println("Creating statement...");
          stmt = conn.createStatement();
          String sql;
          sql = "SELECT ID,AGE,FIRST,AST FROM testtbl";
          ResultSet rs = stmt.executeQuery(sql);

          //STEP 5: Extract data from result set
          while(rs.next()){
             //Retrieve by column name
             int id  = rs.getInt("ID");
             int age = rs.getInt("AGE");
             String first = rs.getString("FIRST");
             String last = rs.getString("LAST");

             //Display values
             System.out.print("ID: " + id);
             System.out.print(", AGE: " + age);
             System.out.print(", FIRST: " + first);
             System.out.println(", LAST: " + last);
          }
          //STEP 6: Clean-up environment
          rs.close();
          stmt.close();
          conn.close();
       }catch(SQLException se){
          //Handle errors for JDBC
          se.printStackTrace();
       }catch(Exception e){
          //Handle errors for Class.forName
          e.printStackTrace();
       }finally{
          //finally block used to close resources
          try{
             if(stmt!=null)
                stmt.close();
          }catch(SQLException se2){
          }// nothing we can do
          try{
             if(conn!=null)
                conn.close();
          }catch(SQLException se){
             se.printStackTrace();
          }//end finally try
       }//end try
       System.out.println("Goodbye!");
    }//end main
    }//end FirstExample

【问题讨论】:

    标签: java jdbc import sybase sap-ase


    【解决方案1】:

    所以我让这部分工作。我必须将 jconn4.jar 从 C:\Sybase\jconnect-7\classes(这是我安装 Sybase 组件的位置)放到我的 java 代码所在的位置:C:\Program Files\Java\jdk1.6..\ jre\lib 现在我可以连接和查询数据库了。 完成此操作后,无需将 import com.sybase 语句放入导入中。

    我还有一个问题。上面代码的编写方式,IP、端口、用户标识、密码所有内容都硬编码在 .java 文件中。但是,我在上面的代码中使用 JDBC 驱动程序“Sybase15”时插入了所有这些信息。

    如何编写直接使用驱动程序的代码,而无需放置 IP/PORT、用户名/密码等敏感信息?这将有几个关键的好处:

    1. 如果驱动信息发生变化,我只能更新驱动,代码仍然有效,
    2. 用户名/密码信息不需要嵌入到代码中。因此安全性增加,多人也可以通过配置自己的 JDBC 连接来使用相同的 .java 源代码。

    非常感谢任何帮助。我对Java很陌生,所以如果这是一个愚蠢的问题,我深表歉意。我从互联网上获得了上面的代码并将其修改为我的目的。非常感谢。

    【讨论】:

    • 嗨,欢迎来到 SO。很高兴您能够解决您的第一个问题。在答案中提出问题在这里并没有真正的帮助,因为它会稀释 Q/A 格式。我建议您从答案中删除这些问题,并将它们作为新问题提交。或者,您可以编辑您的问题。
    猜你喜欢
    • 2016-08-13
    • 1970-01-01
    • 2018-07-29
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 2018-08-29
    • 1970-01-01
    相关资源
    最近更新 更多