Member 12756458 Ответов: 2

Проблема с preparedstatement и execute методом в jdbc


package sql;

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

public class ConnectionDemo {
	
	 public static void main(String[] args) {
	
		 try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			 Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","system","9848451415");
			 PreparedStatement st = con.prepareStatement("insert into emp(empno,ename) values(?,?)");
			 st.setInt(1, 3);
			 st.setString(2, "Naresh");
			 if(st.execute()){
				 System.out.println("Successfull executed");
			 }
			 else
				 System.out.println("Failed");
			
			 
		 }	 
		 catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 
		 
		 
	 } 
}


Что я уже пробовал:

Я попытался вставить еще одну запись в существующую таблицу emp. Изначально программа была выполнена, но моя локальная база данных не была обновлена.

David_Wimbley

Ваш код вызвал ошибку/исключение? Если это так, пожалуйста, укажите, что такое весь stacktrace, используя ссылку improve question выше.

Member 12756458

я использовал функцию execute (boolean), чтобы проверить, правильна ли данная команда sql или нет. Это дает мне сбой, то есть функция execute возвращает false.

[no name]

http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

2 Ответов

Рейтинг:
2

Member 9590560

Я бы лично использовал st. executeUpdate (), который возвращает целое число. Если целочисленное значение больше 0, оператор был выполнен успешно, в противном случае он будет либо равен 0, либо выдаст ошибку, которая будет поймана в блоке catch.
Еще одна проблема будет связана с подключением к базе данных. Вы убедились, что ваше соединение не является нулевым? Вы также загрузили jar-файл/ библиотеку ojdbc в свой путь к классам? Пожалуйста, проверьте их и сообщите нам.

Если (ст.()){
Системы.из.код println("успешно выполнено");
}

изменится на if (st. executeUpdate ()> 0){
Системы.из.код println("успешно выполнено");
}


Рейтинг:
2

Member 12793180

Согласно моей точке зрения, u должен написать ps. executeUpdate () после инициализации ps