У меня возникли проблемы с упражнением я работаю с Java с использованием базы данных Access, интересно, если кто-то может пролить некоторый свет на этотВставка данных в базу данных Access
В моем главном классе я сделать вызов, как это
Product p = new Product("test", "Test Product", 49.50);
insertProduct(p);
Это вызывает insertProduct (p); метод. То, что я пытаюсь сделать, это вставить некоторые тестовые данные в базу данных, вот мой код для этого.
public static void insertProduct(Product p)
{
try
{
System.out.println("Insert test: ");
String insertProduct = "INSERT INTO Products (ProductCode, Description, Price) VALUES ('andr', 'Beginning Android', '38.99')";
PreparedStatement ps = connection.prepareStatement(insertProduct);
ps.setString(1, p.getCode());
ps.setString(2, p.getDescription());
ps.setDouble(3, p.getPrice());
ps.executeUpdate();
ResultSet rs = ps.executeQuery();
rs.next();
String productCode = rs.getString(1);
String description = rs.getString(2);
double price = rs.getDouble(3);
p = new Product(productCode, description, price);
printProduct(p);
System.out.println();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
, когда я запускаю это я получаю
Исключение в потоке «главный» java.lang.NullPointerException
и не может понять, что происходит, я знаю, что, когда я запускаю отладчик и выполняю этот метод, он сбрасывает в начале этого отчета
ps.setString(1, p.getCode());
ps.setString(2, p.getDescription());
ps.setDouble(3, p.getPrice());
ps.executeUpdate();
здесь результаты трассировки стека
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(JdbcOdbcPreparedStatement.java:1023)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(JdbcOdbcPreparedStatement.java:3057)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(JdbcOdbcPreparedStatement.java:766)
at DBTesterApp.insertProduct(DBTesterApp.java:165)
at DBTesterApp.main(DBTesterApp.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Что трассировки стека вашего исключения? Является ли 'p' или' ps' null? – pamphlet
Другая возможность заключается в том, что p.getCode() или p.getDescription() или p.getPrice() возвращают null. (эти значения также не используются в SQL) – NickJ
«Это результаты трассировки стека»: я не вижу его – NickJ