2016-04-12 5 views
0

Ich versuche, meine erste Spalte in einer Tabelle nur automatisch zu erhöhen, wenn eine neue Zeile hinzugefügt wird, aber stattdessen "NULL" wird dort eingefügt.SQL So machen Sie die erste Spalte Inkrement

Hier ist mein Code, um eine neue Zeile zum Einfügen:

String update = "INSERT INTO help(name, area, date, message) VALUES(?, ?, ?, ?)"; 
    try { 
     connection = plugin.getHikari().getConnection(); 
     // Inserting into the table 
     statement = connection.prepareStatement(update); 
     // Replace the '?' with the actual information 
     statement.setString(1, name); 
     statement.setString(2, area); 
     statement.setString(3, date); 
     statement.setString(4, message); 
     statement.execute(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

Hier ist, wie ich meine Tabelle zu erstellen:

statement = connection.prepareStatement(
       "CREATE TABLE IF NOT EXISTS help" + 
         "(" + 
         "id int," + 
         "name varchar(20)," + 
         "area varchar(25)," + 
         "date varchar(15)," + 
         "message varchar(255)" + 
         ")"); 
     statement.execute(); 

Hier ist eine Aussage, die ich jedes Mal die Anwendung ausgeführt wird geladen/beginnt up:

statement = connection.prepareStatement("ALTER TABLE help MODIFY COLUMN id INT auto_increment"); 

Danke, - Nicster

+1

einfügen zu erhöhen Welche DB verwendest du? Sie haben sowohl die mysql- als auch die Oracle-Tags verwendet, aber diese dbs machen das anders. Können Sie auch den create sql der Tabelle anzeigen, damit wir wissen, wie Sie ihn eingerichtet haben? –

+0

@SamM Ich habe meine wichtigsten Posts & Tags bearbeitet. :) – Nicster15

+0

machen Sie Ihre 'ID' Spalte' PRIMARY KEY'. Dann ändern Sie es zu "AUTO_INCREMENT" – 1000111

Antwort

2

Sie können alles tun, was Sie in der create-Anweisung benötigen. Das Problem ist, dass Ihre ID-Spalte nullfähig ist und kein Primärschlüssel ist.

einfach Ihre Aussage erstellen ändern

statement = connection.prepareStatement(
      "CREATE TABLE IF NOT EXISTS help" + 
        "(" + 
        "id int not null auto_increment," + 
        "name varchar(20)," + 
        "area varchar(25)," + 
        "date varchar(15)," + 
        "message varchar(255)" + 
        "PRIMARY KEY (id)" + 
        ")"); 
    statement.execute(); 

Sie sollen nicht die alte table-Anweisung benötigen. Hoffe, dass

+1

Große Antwort Chris. @ Nicster15, Sie müssen nicht jedes Mal, wenn die Anwendung geladen wird, eine ALTER TABLE-Anweisung ausführen. –

+0

@Chris oh super. Eine Frage, was bedeutet "PRIMÄRSCHLÜSSEL"? – Nicster15

+0

Der Primärschlüssel ist die Spalte (oder Spalten), die zur eindeutigen Identifizierung eines Datensatzes in einer relationalen Datenbank verwendet wird. – Chris

0

hilft Entweder man einen Primärschlüssel der Tabelle „PRIMARY KEY (id))“ hinzufügen, die sich auto_increment würde, oder Sie haben Java-Logik verwenden, um den Wert jedes Mal, wenn Sie die Zeile

+0

Was genau ist ein Primärschlüssel? Wie identifizierst du die Reihe? – Nicster15

+0

https://en.wikipedia.org/wiki/Unique_key –

Verwandte Themen