java.sql 导入不工作
java.sql import not working
我的 .getTables
和 .prepareStatement
不工作。我以为我只需要导入 java.sql.*
就可以使它们工作。请让我知道我还需要做什么。感谢您的时间。它在两行旁边都显示 "cannot find symbol" 并且不会编译。
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 java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
而不是您正在使用的那个
我建议您删除这些行:
import javax.jms.Connection;
import javax.jms.JMSException;
...因为它可能不是您实际打算导入的 Connection
class。删除上面的行后,您的 java.sql.*
导入应该获取正确的。
问题出在导入上。
您导入了 javax.jms.Connection
,这是非常错误的。只需删除它。
您想要的是 java.sql (java.sql.Connection
) 包中的连接 class。
此外,我不建议在导入时使用通配符 (.*
),而是选择您实际使用的特定 class。在你的情况下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
你的一些输入是错误的。您需要以下内容才能使其正常工作。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Connection;
先行我建议你有一个单独的class来建立数据库连接。这样你就不需要再重复同样的代码了。
示例代码。 (根据需要对此进行更改。)
例如在你的项目中有一个 DatabaseCon.java class
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
}
}
注意如果是你说的比较大的项目,这种方式还是不错的。
您导入了一些错误的 classes 以供使用。
import java.sql.DriverManager;
import javax.jms.Connection;
import java.sql.*;
import javax.jms.JMSException;
jms导入没用;您徒劳地导入了它们,这导致您的程序出现问题。
需要的主要导入是java.sql.*,
如果您只删除 jms 导入,应用程序将正常工作。
但是,导入 classes 的最佳做法是指定您从中使用 element/method 的特定 class。
原因看这里Single import vs package import
我的 .getTables
和 .prepareStatement
不工作。我以为我只需要导入 java.sql.*
就可以使它们工作。请让我知道我还需要做什么。感谢您的时间。它在两行旁边都显示 "cannot find symbol" 并且不会编译。
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 java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
而不是您正在使用的那个
我建议您删除这些行:
import javax.jms.Connection;
import javax.jms.JMSException;
...因为它可能不是您实际打算导入的 Connection
class。删除上面的行后,您的 java.sql.*
导入应该获取正确的。
问题出在导入上。
您导入了 javax.jms.Connection
,这是非常错误的。只需删除它。
您想要的是 java.sql (java.sql.Connection
) 包中的连接 class。
此外,我不建议在导入时使用通配符 (.*
),而是选择您实际使用的特定 class。在你的情况下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
你的一些输入是错误的。您需要以下内容才能使其正常工作。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Connection;
先行我建议你有一个单独的class来建立数据库连接。这样你就不需要再重复同样的代码了。
示例代码。 (根据需要对此进行更改。)
例如在你的项目中有一个 DatabaseCon.java class
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
}
}
注意如果是你说的比较大的项目,这种方式还是不错的。
您导入了一些错误的 classes 以供使用。
import java.sql.DriverManager;
import javax.jms.Connection;
import java.sql.*;
import javax.jms.JMSException;
jms导入没用;您徒劳地导入了它们,这导致您的程序出现问题。
需要的主要导入是java.sql.*, 如果您只删除 jms 导入,应用程序将正常工作。
但是,导入 classes 的最佳做法是指定您从中使用 element/method 的特定 class。
原因看这里Single import vs package import