Sql error codes in java

Работа с ошибками

При работе Java-программы могут возникать ошибки. При работе с базой данных ошибки будут возникать. Все дело лишь в том, какие из них ты можешь предсказать и предложить адекватное решение.

Первая большая группа ошибок будет тебя ждать при выполнении этой строчки:

Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "secret"); 

Что вас тут может ожидать?

Ошибка 1. Драйвер не найден.

Если ты получил ошибку “No suitable driver found for …” это значит, что DriverManager не смог понять какой тип СУБД скрывается за вашим URL. Например, ты написал jdbc_mysql: вместо jdbc:mysql:

Ошибка 2. Ошибка соединения.

Если ты допустил ошибку в имени хоста, то, скорее всего, получишь сообщение типа “No such host is known” или “Communications link failure”.

Ошибка 3. Неверно указано имя базы данных.

Если ты допустил опечатку в имени базы данных или подключаешься к другому серверу, где ее нет, то получишь сообщение типа “Unknown database ‘supershop3’” .

Ошибка 4. Неверный логин или пароль.

Если ты забыл пароль от базы или неверно его указал, то, скорее всего, получишь сообщение типа “Access denied for user ‘root’@’localhost’ (using password: YES)” .

SQL Exception

Если соединение с базой все же установилось, то дальше будет интереснее. На случай ошибок при работе с базой у JDBC есть специальные исключение – java.sql.SQLException. А также несколько ее разновидностей.

У этого исключения есть только один дополнительный метод (в сравнении с классом Exception) – это метод getSQLState(), который возвращает код состояния (строку), который вернул ему SQL-сервер. Обработка ошибок при этом выглядит так:

 Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "secret"); try < int rowsCount = statement.executeUpdate("DELETE FROM ‘Unemployees’"); >catch (SQLException ex) < // Если таблица не существует if (ex.getSQLState().compareTo("X0Y32") != 0) < throw ex; >> finally

Кодов ошибок при этом несколько сотен. Полный список можешь посмотреть тут.

Но иногда коды ошибок помогают JDBC понять ошибку лучше и тогда он создает не просто SQLException, а специализированные SQLException:

BatchUpdateException Ошибка во время группового запроса
DataTruncation Часто возникает при обрезании длинных данных
SQLClientInfoException Клиент передал параметры, которые не могут быть установлены у соединения: Connection
SQLDataException Ошибка с данными, детали зависят от типа СУБД
SQLException Ошибка доступа к базе или другие общие ошибки
SQLFeatureNotSupportedException СУБД не поддерживает данную функциональность
SQLIntegrityConstraintViolationException Все ошибки с для SQLState ==22
SQLInvalidAuthorizationSpecException Ошибка доступа и/или авторизации
SQLNonTransientConnectionException Все ошибки с для SQLState ==08
SQLRecoverableException Ошибка есть, но ее можно исправить при вмешательстве application
SQLSyntaxErrorException Ошибка в синтаксисе запроса
SQLTimeoutException Запрос выполнялся слишком долго
SQLTransactionRollbackException Ошибка во время отката транзакции
SQLWarning Предупреждение, которое выслала СУБД

Примеры ошибок

Если ошибка произошла на этапе работы серверного приложения, то обычно ее можно только логировать и потом подробнее с ней разбираться. А вот если она произошла во время работы приложения на компьютере программиста, то тут тебе нужно тщательно исследовать причину этого.

Есть два самых больших классов ошибок при работе с базой данных:

Ошибка в тексте запроса может возникать очень часто. Запрос может быть очень длинным, содержать несколько таблиц (объединенных через JOIN) и подзапросов (SUBSELECT). Найти ошибку в таком запросе непросто. Кроме того, запросы часто склеиваются из частей, туда добавляются данные.

Самая первая ошибка, о которой тебе следует знать, — это SQLSyntaxErrorException . Такая ошибка обычно значит, что у тебя опечатка в теле запроса.

Возьмем наш любимый пример:

 ResultSet results = statement.executeQuery("SELECT Count(*) FROM user"); results.next(); int count = results.getInt(1); 

И “случайно” сотрем звездочку в теле запроса:

 ResultSet results = statement.executeQuery("SELECT Count() FROM user"); results.next(); int count = results.getInt(1); 

Тогда мы получим исключение:

Exception in thread "main" java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') FROM task' at line 1 at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) 

SQL-сервер пишет нам, что перед FROM была синтаксическая ошибка.

Внимательно смотрим на запрос и думаем. Если ничего не приходит в голову, а такое бывает очень часто, то нужно попросить кого-нибудь посмотреть, что не так.

Еще одна популярная ошибка — неправильная работа с ResultSet — результатом запроса. Допустим ты забыл, что перед чтением данных “текущая строка” объекта ResultSet стоит перед первой строкой, то у тебя будет такой код:

 ResultSet results = statement.executeQuery("SELECT Count(*) FROM user"); // results.next(); int count = results.getInt(1); 
 2012 12:55:48 AM jButton5ActionPerformed SEVERE: null java.sql.SQLException: Before start of result set at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:841) at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5650) at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5570) 

Внимательно смотрим на ошибку и думаем. Затем гуглим и находим пару примеров и пытаемся понять решение.

Источник

Java sql sqlexception error code

Over the past few days, some users have encountered a known error in the java.sql.sqlexception error code list. This problem can arise for several reasons. Let’s look at them now.

Approved: ASR Pro

Speed up your computer’s performance now with this simple download.

  • Introducing SQLException
  • Get exceptions
  • Receive alerts.
  • SQL Categorized Exceptions
  • Other SQLException Subclasses

Introducing SQLException

If JDBC encounters an error while interacting with the data source, it will throw a SQLException as an example, not a exception . (The data source in this context is the database to which the Connection element is connected.) SQLException The instance usually contains the following information, which can help you determine the cause of the error:

  • Description of the error. Get a String object containing this description by calling the SQLException.getMessage tool.
  • SQLState code. These codes and their corresponding meanings have been standardized by ISO / ANSI and the Open Group (X / Open), although some restrictions have been left to the database editors to define themselves definitively. This String object consists of five alphanumeric characters. Get this mode by calling the SQLException.getSQLState method.
  • Error of laws. This is an error identifying an integer value that caused the SQLException instance to be collected. Its meaning and meaning remains implementation specific and may be a valid error code returned by the underlying trader. Get the error by calling the schema SQLException.getErrorCode .
  • Reason. A sqlexception instance can have a causal relationship consisting of it or more Throwable objects that resulted in our own sqlexception instance being created. ThursdayTo combine these reasons, call my SQLException.getCause method recursively until a match is found for null .
  • Link to compound exceptions. If more than one error occurs, they are actually the exceptions that this line refers to. Gets exceptions thrown by the SQLException.getNextException method thrown.

Retrieving Exceptions

java.sql.sqlexception error code list

The following method JDBTCutorialUtilities, .printSQLException returns SQLState, error code, error description, and reason (if any) that is contained in sqlexception are contained in As, and any other exceptions are concatenated into:

For example, if you call the course CoffeesTable.dropTable with Java DB as your DBMS, the COFFEES table does not exist, in addition to removing the JDBTCutorialUtilities.ignoreSQLException < / code>the output will be something like this:

Instead of printing SQLException information, you can first get SQLState and then handle some of the SQLException as needed. For example, the strategies JDBTCutorialUtilities.ignoreSQLException in return true if SQLState is a version comparable to 42Y55 (and you are using Java DB as your DBMS), which allows JDBTCutorialUtilities.printSQLException ignore SQLException :

Receive Warnings

SQLWarning objects are a subclass of SQLException that controls access to database warnings. Warnings do not halt the task execution, unlike exceptions; simply warning the user that something is not planned. For example, an alert might say that you know the permission you used to revoke has not been revoked.

A can be passed through a Connection object, one Statement object (including PreparedStatement and CallableStatement ) becomes objects) or a ResultSet object. Each of these classes has a getWarnings method that buyers must call to see an initial warning about the calling idea. If getWarnings returns a warning, you can SQLWarning call the getNextWarning method to resolve the issue so thatYou will receive additional warnings. Executing a functional instruction automatically removes warnings from the previous functional instruction so that they do not appear. However, this means that you need to be warned about an incredible claim before clients can execute another claim.

java.sql.sqlexception error code list

The following methods in JDBTCutorialUtilities show how to populate warning information reported for Statement ResultSet objects:

The most common warning is the complete DataTruncation warning, a subclass of SQLWarning . All DataTruncation objects have SQLState 01004 , indicating that there was a problem listening or writing data. With the DataTruncation methods, most people can know in what order or in what order the parameter data was truncated, if the truncation was represented by a read or write operation, which method would have to be used to transfer many bytes, and how many bytes were actually transferred.

Categorized SQL Exceptions

java.sql.sqlexception error code list

Your JDBC driver might generate a SQLException subclass that corresponds to a normal SQLState or general error state that experts believe is not related to a SQLState-specific class value. This allows for more portable error handling code. These exceptions are usually subclasses of one of the future classes:

Approved: ASR Pro

ASR Pro is the world’s most popular and effective PC repair tool. It is trusted by millions of people to keep their systems running fast, smooth, and error-free. With its simple user interface and powerful scanning engine, ASR Pro quickly finds and fixes a broad range of Windows problems — from system instability and security issues to memory management and performance bottlenecks.

For more information on these subclasses, see the latest Javadoc in the java.sql file or the JDBC owner documentation.

Other SQLException Subclasses

  • BatchUpdateException is thrown if a fatal error occurs during a batch update. In addition to the information provided by the SQLException process, BatchUpdateException provides update numbers if any statements that were executed prior to one person’s error are taken into account.
  • SQLClientInfoException is thrown when one or more client information properties cannot be setus specifically for the connection. In addition to the information provided by SQLException , SQLClientInfoException contains a list of client information properties that have unfortunately not been defined.

Avoid public static printSQLException (SQLException ex) check (one-time e: ex) if (instance of SQLException) if yes (ignoreSQLException ( ((ExceptionSQL) e). getSQLState ()) == false) e.printStackTrace (System.err); System.err.println («SQLState: centimeters + ((SQLException) e) .getSQLState ()); System.err.println («error» code: + ((SQLException) e) .getErrorCode ()); System.err.println («Message: via + e.getMessage ()); One-time t = ex.getCause (); while (t! = zero) System.out.println («Reason: +» t); t implies t.getCause ();

SQL State: 42Y55Error code: 30000Message: ‘DROP TABLE’ cannot be practiced»TESTDB.COFFEES» to be

Speed up your computer’s performance now with this simple download.

  • Java.sql.sqlexception Ora-00604 An Error Occurred At The Recursive SQL Level? Repair ImmediatelyJava.sql.sqlexception Ora-00604 An Error Occurred At The…
  • Tips For Resolving Microsoft Word Connection Errors With Printer ErrorsTips For Resolving Microsoft Word Connection Errors With…
  • Tips For Fixing Network Errors, DNS Server ErrorsTips For Fixing Network Errors, DNS Server Errors
  • Help Fix Unsupported Version Of Class Errors In Java ErrorHelp Fix Unsupported Version Of Class Errors In Java Error
  • How Do I Fix A Browser That DoesnHow Do I Fix A Browser That Doesn’t Support Java Errors?
  • What Is Vb6 Error List And How To Fix It?What Is Vb6 Error List And How To Fix It?

Источник

Читайте также:  Событие onmouseover
Оцените статью