four systems Ответов: 3

Подключение к базе данных Java jdbc


код для jdbc есть , при запуске ошибка есть

java.sql.SQLSyntaxErrorException: столбец " ID " либо отсутствует в какой-либо таблице в списке FROM, либо появляется в спецификации join и выходит за рамки спецификации join, либо появляется в предложении HAVING и не входит в список GROUP BY. Если это оператор CREATE или ALTER TABLE, то "ID" не является столбцом в целевой таблице.
в орг."Апач".derby.client.am.SQLExceptionFactory.getSQLException(неизвестный источник)
в орг."Апач".derby.client.am.SqlException.getSQLException(неизвестный источник)
в орг."Апач".derby.client.am.ClientStatement.execute(неизвестный источник)
в Rdbms.javadbms.insertGood(javadbms.java:44)
в Rdbms.javadbms.main(javadbms.java:22)
Вызвано: ошибка 42X04: столбец " ID " либо отсутствует в какой-либо таблице в списке FROM, либо появляется в спецификации join и выходит за рамки спецификации join, либо появляется в предложении HAVING и не входит в список GROUP BY. Если это оператор CREATE или ALTER TABLE, то "ID" не является столбцом в целевой таблице.
в орг."Апач".derby.client.am.ClientStatement.completeSqlca(неизвестный источник)
в орг."Апач".derby.client.am.ClientStatement.completeExecuteImmediate(неизвестный источник)
в орг."Апач".derby.client.net.NetStatementReply.parseEXCSQLIMMreply(неизвестный источник)
в орг."Апач".derby.client.net.NetStatementReply.readExecuteImmediate(неизвестный источник)
в орг."Апач".derby.client.net.StatementReply.readExecuteImmediate(неизвестный источник)
в орг."Апач".derby.client.net.NetStatement.readExecuteImmediate_(неизвестный источник)
в орг."Апач".derby.client.am.ClientStatement.readExecuteImmediate(неизвестный источник)
в орг."Апач".derby.client.am.ClientStatement.flowExecute(неизвестный источник)
в орг."Апач".derby.client.am.ClientStatement.executeX(неизвестный источник)
... Еще 3
Сборка прошла успешно (общее время: 2 секунды)

имя таблицы хорошее и имеет столбцы id и Name


package Rdbms;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSetMetaData;


public class javadbms
{
    private static String dbURL = "jdbc:derby://localhost:1527/Oracle;create=true;user=Android;password=java";
    private static String tableName = "GOOD";
    // jdbc Connection
    private static Connection conn = null;
    private static Statement stmt = null;

    public static void main(String[] args)
    {
        createConnection();
        insertGood(4, "id");              
    }
    
    private static void createConnection()
    {
        try
        {
            Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
            //Get a connection
            conn = DriverManager.getConnection(dbURL); 
        }
        catch (Exception except)
        {
            except.printStackTrace();
        }
    }
    
    private static void insertGood(int id, String Name)
    {
        try
        {
            stmt = conn.createStatement();
            stmt.execute("insert into " + tableName + " values ("+id +", "+ Name +")");
            stmt.close();
        }
        catch (SQLException sqlExcept)
        {
            sqlExcept.printStackTrace();
        }
    }        
}


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

изменил код , имя таблицы и проверил столбцы

3 Ответов

Рейтинг:
2

Richard MacCutchan

java.sql.SQLSyntaxErrorException: Column 'ID' is either not in any table in the FROM list or appears within a join specification and is outside the scope of the join specification or appears in a HAVING clause and is not in the GROUP BY list. If this is a CREATE or ALTER TABLE statement then 'ID' is not a column in the target table.
Вам нужно выяснить, почему вы получаете это сообщение. Вам также необходимо научиться правильно создавать операторы SQL с помощью параметризованных запросов, а не с помощью конкатенации строк.


four systems

спасибо

Рейтинг:
1

Jochen Arndt

Я не знаю, является ли это причиной ошибки, но строковые параметры должны быть заключены в кавычки:

stmt.execute("INSERT INTO " + tableName + " VALUES (" + id + ", '" + Name + "')");
Таких проблем можно избежать при использовании параметризованных запросов, как уже предлагалось.

Другая возможная причина ошибки может заключаться в том, что ваш id столбец-это столбец с автоматическим приращением.

В любом случае вы можете попробовать использовать полный INSERT команда для проверки, если это приводит к той же ошибке:
stmt.execute("INSERT INTO " + tableName + " (id, Name) VALUES (" + id + ", '" + Name + "')");


four systems

спасибо

four systems

есть ли способ, чтобы записи можно было читать из csv-файла и вставлять в БД

Jochen Arndt

Вам нужен класс CSV reader (который может быть реализован как драйвер базы данных CSV). Но вы должны соблюдать формат CSV (разделительный символ, С/без строки заголовка), кодировку и соответствие полей CSV столбцам таблицы БД.

four systems

спасибо

Рейтинг:
0

shwetakakran

For connecting java application with the mysql database, you need to follow 5 steps to perform database connectivity.

In this example we are using MySql as the database. So we need to know following informations for the mysql database:

Driver class: The driver class for the mysql database is com.mysql.jdbc.Driver.
Connection URL: The connection URL for the mysql database is jdbc:mysql://localhost:3306/sonoo where jdbc is the API, mysql is the database, localhost is the server name on which mysql is running, we may also use IP address, 3306 is the port number and sonoo is the database name. We may use any database, in such case, you need to replace the sonoo with your database name.
Username: The default username for the mysql database is root.
Password: Password is given by the user at the time of installing the mysql database. In this example, we are going to use root as the password.


four systems

круто теперь работает с подготовленными заявлениями