【问题标题】:java.sql import not workingjava.sql 导入不起作用
【发布时间】:2017-05-08 05:52:27
【问题描述】:

我的 .getTables.prepareStatement 无法正常工作。我以为我只需要导入java.sql.* 就可以了。请让我知道我还需要做什么。感谢您的时间。它在两行旁边都显示“找不到符号”并且不会编译。

import edu.lcc.citp.inventory.Product;
import java.sql.DriverManager;
import javax.jms.Connection;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import javax.jms.JMSException;

public class DatabaseProductDao implements DataAccessObject<Product> {

Connection con;

public DatabaseProductDao() throws SQLException, JMSException, ClassNotFoundException {

    Class.forName("cockeb.org.apache.derby.jdbc.ClientDriver");

    try (Connection con = (Connection) DriverManager.getConnection("jdbc:derby://localhost:1527/store;create=true")) {
        boolean exists = con.getMetaData().getTables(null, null, "PRODUCT", null).next();
        if (exists) {
            System.out.println("Table Exists");
        } else {
            String createDml = "CREATE TABLE PRODUCT (UPC VARCHAR(25), SHORT_DETAILS VARCHAR(50), LONG_DETAILS VARCHAR(5000), PRICE DECIMAL(10,2), STOCK INTEGER, PRIMARY KEY (UPC))";
            PreparedStatement createStatement =     con.prepareStatement(createDml);
            createStatement.execute();
        }
    } catch (SQLException e) {
        System.out.println("Can Not Connect At This Time");
    }
}

【问题讨论】:

  • 错误是什么?
  • “我还需要做什么” - 描述一下问题怎么样?
  • 它说在每行旁边找不到符号
  • 就是这么说的吗?
  • 删除 import javax.jms.Connection; 并改用 import java.sql.Connection;

标签: java sql jdbc import packages


【解决方案1】:

问题在于进口。 您导入了javax.jms.Connection,这显然是错误的。只需删除它。 你想要的是 java.sql (java.sql.Connection) 包中的 Connection 类。

此外,我不建议在导入时使用通配符 (.*),而是选择您实际使用的特定类。在你的情况下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

【讨论】:

    【解决方案2】:

    您需要添加以下导入

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    

    而不是你正在使用的那个

    【讨论】:

      【解决方案3】:

      我建议你删除这些行:

      import javax.jms.Connection;
      import javax.jms.JMSException;
      

      ...因为它可能不是您实际打算导入的 Connection 类。删除上面的行后,您的 java.sql.* 导入应该得到正确的。

      【讨论】:

        【解决方案4】:

        您的某些导入是错误的。你需要在下面让它工作。

          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.PreparedStatement;
          import java.sql.Connection;
        

        先一步我想建议你有一个单独的类来建立数据库连接。这样您就不需要再次重复相同的代码了。

        示例代码。 (根据需要对此进行更改。)

        例如,您的项目中有一个 DatabaseCon.java 类

          package classes;
        
          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.PreparedStatement;
        
          public class DatabaseCon {
        
              private static Connection c;
        
              private static void connect()
                     throws Exception {
                  Class.forName("com.mysql.jdbc.Driver").newInstance();
                  String url = "db_url/db";
                  c = DriverManager.getConnection(url, "username", "pass");
              }
        
              public static PreparedStatement prepareState(String sql)
                   throws Exception {
        
                  if (c == null) {
                      connect();
                  }
                  return c.prepareStatement(sql);
              }
        
           }
        

        这可以被

        调用
          public void yourMethod() {
              PreparedStatement p = null;
              try {
                   p = DatabaseCon.prepareState("Your_query");
                   ............
        
              } catch (Exception e) {
                  //catch it
              } finally {
                  //do the final stuff
              }
         }
        

        注意如果是你提到的一个相当大的项目,这种方式很好。

        【讨论】:

          【解决方案5】:

          您导入了一些错误的类以供使用。

          import java.sql.DriverManager;
          import javax.jms.Connection;
          import java.sql.*;
          import javax.jms.JMSException;
          

          jms 导入没有用;您徒劳地导入了它们,这导致您的程序出现问题。

          所需的主要导入是 java.sql.*, 如果您只删除 jms 导入,应用程序将正常工作。

          但是,导入类的最佳做法是指定使用元素/方法的特定类。

          原因见这里Single import vs package import

          【讨论】:

            猜你喜欢
            • 2020-09-21
            • 1970-01-01
            • 2019-03-01
            • 2018-06-16
            • 1970-01-01
            • 2015-12-10
            • 2018-02-25
            • 2014-03-17
            • 2015-04-18
            相关资源
            最近更新 更多