2013-06-25 2 views
0
import java.sql.*; 
import sun.jdbc.odbc.JdbcOdbcDriver; 
class Jdbc1 
{ 
    public static void main(String[] args) throws Exception 
    { 
     JdbcOdbcDriver jd=new JdbcOdbcDriver(); 
     DriverManager.registerDriver(jd); 
     Connection con=DriverManager.getConnection("jdbc:odbc:sai123","SYSTEM","sai123"); 
     Statement st=con.createStatement(); 
     int res=st.executeUpdate("insert into A1 values('1','tomato','10')"); 
     System.out.println(res+"record is inserted.."); 
     st.close(); 
     con.close(); 
    } 
} 

и у меня есть создает таблицу, как:Я не могу вставить запись в таблицу, созданную в базе данных oracle. Какую ошибку я делаю?

CREATE TABLE A1(
INO INTEGER NOT NULL, 
INAME CHAR(30) NOT NULL, 
IPRICE INTEGER NOT NULL 
); 

Когда я скомпилировать и запустить Java прог он говорит: «1 запись вставляется ..», но когда я открываю таблицу в SQLDeveloper я не нашел ни одной новости в таблице. Все они пустые! Я также установил путь к классам для ojdbc-6.jar. Какую ошибку я делаю ей? Есть ли другие файлы, которые я должен скопировать и вставить? Я просто начинающий, любезно, пожалуйста, помогите. И как моя программа в Editplus направляет обновления непосредственно в таблицу, созданную в SQL. Каким образом это происходит?

+1

'COMMIT' может быть? –

+1

Пожалуйста, не создавайте таблицы в учетной записи 'SYS' или' SYSTEM' ... –

+0

, но вот как я могу подключиться к базе данных оракула, не так ли? –

ответ

4

У Oracle по умолчанию установлено значение auto-commit. Либо установить AutoCommit истину от Oracle SQL Developer (или кода) или зафиксировать изменения в коде:

//before con.close() 
con.commit(); 

Или, если вы хотите установить в AUTOCOMMIT:

//after creating Connection 
conn.setAutoCommit(true); 
+0

как я могу это сделать? –

+0

Ive добавил, что ... все равно то же самое. –

+1

тоже пробовал автокомментировать! –

0

Попробуйте совершение записи по вызывая conn.commit();

также сошлитесь Why Execute Update Says, one row updated on insert query

окончательный код магистральный должен выглядеть public static void main(String[] args) throws Exception
{
JdbcOdbcDriver jd=new JdbcOdbcDriver();
DriverManager.registerDriver(jd);
Connection con=DriverManager.getConnection("jdbc:odbc:sai123","SYSTEM","sai123");
Statement st=con.createStatement();
int res=st.executeUpdate("insert into A1 values('1','tomato','10')");
System.out.println(res+"record is inserted..");
con.commit();
st.close();
con.close();
}

+0

все еще показывает ту же таблицу с нулевыми значениями! –

+0

Вы уверены, что проверяете правильную таблицу при правильной схеме и сервере? –

0

Возможно ли, что ваш Java-код и SQLDeveloper относятся к другой схеме? Я бы предложил сделать следующий

  1. Сделать INO первичного ключом таблицы
  2. Поместите con.commit(); между int res=st.executeUpdate("insert into A1 values('1','tomato','10')"); и System.out.println(res+"record is inserted..");
  3. запустить программу несколько раз, чтобы проверить, если вы получаете первичный ключ нарушения исключение. Это скажет вам, если ваша программа вставляет в таблицу, на которую вы не смотрите.
+0

все еще показывает ту же таблицу с нулевыми значениями! –

+0

И как моя программа в Editplus направляет обновления непосредственно в таблицу, созданную в SQL. Каким образом это происходит? –