Witam. Mam problem z załadowaniem danych do bazy danych, aby każdy kolejny rekord, tzn jego "id" było nadawane automatycznie (AUTO_INCREMENT). Ale jakoś u mnie to nie chcę działać. Możecie mi pomóc, bo mi się wyczerapły pomysły. Piszę na forum z Javy, bo wydaje mi się,że jest to błąd składniowy w Javie, z mojej strony a nie SQL. Liczę na Waszą pomoc [glowa] .
Pozdrawiam
Podaje kod:
package sql_operations;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
public class ObsługaBazyDanych {
static Connection conn = null;
static Statement stmt = null;
static void DriverRegistration(){
try{
Class.forName("com.mysql.jdbc.Driver");
System.out.print("Sterownik załadowany prawidłowo.\n");
}catch(ClassNotFoundException e){
System.out.print("Nie załadowano sterownika.\n");
}
}
static Connection Connect2Database(){
String url = "jdbc:mysql:///Database";
String login = "xxxx";
String password = "xxxx";
try{
conn = DriverManager.getConnection(url,login,password);
System.out.print("Połączenie z: "+url+" zostało nawiązane.\n");
}catch(Exception e){
System.err.print("Połączenie z: "+url+" nie powiodło się.\n");
}
return conn;
}
static void CreateTable(){
String create = "CREATE TABLE ludziska"+
"(id integer NOT NULL AUTO_INCREMENT,"+
"imie varchar (25),"+
"nazwisko varchar (30),"+
"wiek integer (100),"+
"telefon varchar (10),"+
"miasto varchar (30)," +
"PRIMARY KEY (id))";
try{
stmt = conn.createStatement();
stmt.executeUpdate(create);
stmt.close();
//conn.close();
System.out.print("Utworzenie tabeli powiodło się.\n");
} catch(Exception e) {
System.err.println("Stworzenie tabeli w bazie nie powiodło się: " +e.getMessage());
}
}
static void InsertData(){
String string1, string2,string3;
string1 ="INSERT INTO ludziska VALUES('','Maena','Weeedd','25','6xx8xx7xx','Rypin')";
string2= "INSERT INTO ludziska VALUES ('','Marcin','Xland','26','6xxxxxxx2','Wrocław')";
string3= "INSERT INTO ludziska values('','Marcin','Simoni','26','6xxx62xx','Wrocław')";
try {
stmt = conn.createStatement();
stmt.executeUpdate(string1);
stmt.executeUpdate(string2);
stmt.executeUpdate(string3);
stmt.close();
conn.close();
System.out.print("Dane umieszczone w tabeli poprawnie.\n");
} catch(SQLException e) {
System.err.println("Nie wprowadzone danych do tabeli: " + e.getMessage());
}
}
static void SelectData(){
String select = "SELECT id,imie FROM ludziska";
try{
stmt = conn.createStatement();
ResultSet result = stmt.executeQuery(select);
while(result.next()){
String value1 = result.getString("id");
System.out.print(value1+"\n");
String value2 = result.getString("imie");
System.out.print(value2+"\n");
}
}catch(Exception e){
}
System.err.print("Pobranie danych z bazy nie powiodło się.");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
DriverRegistration();
Connect2Database();
CreateTable();
InsertData();
SelectData();
}
}
A wynik dziłania tego programu to:
Sterownik załadowany prawidłowo.
Połączenie z: jdbc///Database zostało nawiązane.
Utworzenie tabeli powiodło się.
Nie wprowadzone danych do tabeli: Data truncation: Out of range value adjusted for column 'id' at row 1
Pobranie danych z bazy nie powiodło się.
Problem jak widać dotyczy wprowadzania danych do tabeli, liczę na wyrozumiałość jeśli pytanie jest zbyt proste, jednak nie jestem w stanie sobie z nim poradzić :(