РЕДАКТИРОВАТЬ: Вы все еще не указали, какая строка 197 в вопросе, но я предполагаю, что это
p1 = conn.prepareStatement(s1);
Это почти наверняка из-за этого бита конструктора:
Connection conn=DriverManager.getConnection("jdbc:odbc:reg","system","suganthi");
Здесь объявляется локальная переменная с именем conn
. Предположительно, у вас также есть переменная instance с именем conn
, но локальная переменная скрывает ее. Вы присваиваете локальную переменную, что означает, что переменная экземпляра будет иметь значение по умолчанию, равное нулю. Вы, вероятно, имели в виду только:
conn = DriverManager.getConnection("jdbc:odbc:reg","system","suganthi");
Однако, если возникает исключение, вы не должны просто печатать «Ошибка» и продолжать работу ... вы, вероятно, должны вместо этого выбросить исключение из конструктора. В конце концов, экземпляр не будет работать должным образом, если у вас нет подключения к базе данных.
Вам также следует рассмотреть возможность создания соединения с базой данных только тогда, когда оно вам действительно нужно, и немедленного его закрытия. Используйте пул соединений, чтобы позволить этому быть эффективным там, где это необходимо.
Оригинальный ответ
Вы не показали фрагмент кода, который вызывает исключение, а именно jButton1ActionPerformed
, причем строка 197 является виновником. Вы показали нам jButton3ActionPerformed
вместо.
Покажите нам правильный фрагмент кода с номерами строк, и у нас больше шансов помочь вам. Или просто посмотрите, что используется в строке 197 - что-то там приводит к пустой ссылке, которую вы пытаетесь разыменовать, например,
int foo = someNullValue.getIntValue();
Это может быть результат вызова метода, например,
foo().getIntValue(); // Will throw if `foo()` returns null
Кроме того, выполнение работы с базой данных в потоке пользовательского интерфейса, как правило, не является хорошей идеей - хотя, будучи новичком, может быть проще получить правильное решение и жить с зависанием пользовательского интерфейса при доступе к базе данных, чем получить многопоточность , Тем не менее, вам следует подумать о том, чтобы правильно его заправить, когда у вас появится больше опыта.