Data Truncated

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo Leute!
Also ich bin gerade am Programmieren, und jetzt komm ich nicht mehr weiter.
Kurz zur info, ich muss eine Seite erstellen wo sich wer Registrieren kann.
Datenbank sieht so aus:

BenutzerID int(9) unsigned auto_increment
Name Text
Nachname Text
..usw.

Code:
INSERT INTO `benutzer` ( `BenutzerID` , `Nickname` , `Name` , `Nachname` , `Passwort` , `email` , `Strasse` , `PLZ` , `Ort` , `Nation` )VALUES ('', 'Nickname', 'basdaf', 'afdsaf', 'dd', 'fsdafsd','fsd', 'sdfsdaf', 'dsaf', 'sdfdsa');

Das ist das was ich in die Datenbank schreibe. Wenn ichs direkt in per SQL im phpmyadmin eingebe funktionierts wunderbar, jedoch wenn ichs über JAVA eingebe spuckt er mir das aus:

Code:
Fehler beim Ausfuehren des SQL Befehls! => EXECUTE-BEFEHL com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data truncated for column 'BenutzerID' at row 1

Bitte helft mir so schnell als möglich, da ich schon ziemlich einen Zeitdruck habe.

Danke im vorraus ;)

Mfg Leo
 

André Uhres

Top Contributor
Ich weiss nicht so recht ... aber die "Value" für "BenutzerID" ('') sieht
mir doch nicht so sehr nach einem "int" aus, oder?
 

JaLeo

Mitglied
Hi, (bin der GAST)
Vorerst mal danke für deine schnelle Antwort.
Jap, ich weiß das das kein int ist, aber in ein AUTO_INCREMENT schreibt man doch keinen INT rein, wenns eh von alleine hochzaehlt oder?
Was hätte das dann für einen sinn?

Und wie schon gesagt, wenn ichs direkt in die Datenbankreinschreib dann gehts ohne probleme.

Mfg Leo
 

André Uhres

Top Contributor
Sorry, hab das "AUTO_INCREMENT" übersehen.
Vielleicht wird dann diese Funktion nicht vom java-sql Treiber unterstützt.
Versuchs mal ohne das "AUTO_INCREMENT", und vergib die "BenutzerID"
im Programm als "int".
 

JaLeo

Mitglied
Das hab ich eh schon probiert das ich statt dem '' eine Zahl übergebe. dann haut alles super hin.
Nur zur eindeutigen Identifikation brauch ich ja eine ID.
Ich hab keine ahnung wie ich das jetzt anstellen sollte.

MFg Leo
 

André Uhres

Top Contributor
Also mit "MySQL" und "JdbcOdbcDriver" funktioniert's bei mir ohne Weiteres,
sowohl mit "AUTO_INCREMENT" als auch mit einem programmierten Zähler.
Tut mir leid, aber ich weiß jetzt wirklich nicht mehr was ich sagen soll.
 

JaLeo

Mitglied
Naja.. ich verwende den "mysql-connector-java-3.2.0-alpha.zip" und bei dem gehts leider nicht.. -.-
Aber danke für deine mühe!

EDIT:// mir kommt vor mit dem JDBC Connector ist man viel flexibler..
 

André Uhres

Top Contributor
Super ! Dann haben wir ja die Lösung:
Code:
            DriverManager.registerDriver( new sun.jdbc.odbc.JdbcOdbcDriver() );
...
    private final String DATABASE_URL = "jdbc:odbc:" + DATABASE_NAME;
 

André Uhres

Top Contributor
Nein, nein!
Probiers einfach mit dem angegeben Code !
Der "JdbcOdbcDriver" braucht nicht installiert zu werden weil er im java runtime schon drin ist ! :D
 

JaLeo

Mitglied
Code:
public class DBConnect {
	static Connection con;
            private final String url = "jdbc:odbc:" + "//localhost:3306/matura";
    
	/** Stellt die Verbindung zur Datenbank her*/
	public DBConnect(){
            	
       try{
        	DriverManager.registerDriver( new sun.jdbc.odbc.JdbcOdbcDriver() ); 
	
		} catch (Exception ex){
			System.out.println("FEHLER BEIM LADEN DES TREIBERS " + ex.toString());
		}
		
		//String url = "jdbc:mysql://localhost:3306/matura";
		String user = "test";
		String pwd = "test";
		
		try{
			con = DriverManager.getConnection(url,user,pwd);
		}catch (SQLException ex){
			System.out.println("Fehler beim verbinden!" + ex.toString());	
		}	
	}}

Ähm.. so in der art? gg
 

André Uhres

Top Contributor
Das "localhost"-Zeugs kannst du vergessen, ansonsten müsste alles hinhauen:
Code:
private final String url = "jdbc:odbc:matura";
 

JaLeo

Mitglied
Naja.. gibts da irgendwas was ich zusätzlich in den classpath hinzu fügen muss?

Mir gibts diesen fehler aus..

Code:
Fehler beim verbinden! java.sql.SQLException: 
[Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben

ich verwende die j2sdk mit der neuen j2se..
und da ist das ganze Enterprise zeugs auch dabei.

Mfg Leo
 

André Uhres

Top Contributor
Sorry, ich hab was vergessen: wir müssen die Datenquelle in Windows definieren.
Ich meld mich gleich wieder um dir zu zeigen wie das geht.
 

André Uhres

Top Contributor
Download MySQL ODBC Driver
Code:
/* 
* Daten_Quellen.java 
*/ 
import java.awt.*; 
import javax.swing.*; 
public class Daten_Quellen extends JFrame { 
    public Daten_Quellen() { 
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
        setTitle("Datenquellen"); 
        JTextArea textarea = new JTextArea(); 
        textarea.setEditable(false); 
        textarea.setBackground(new Color(255, 255, 204)); 
        textarea.setFont(new Font("SansSerif", 1, 13));
        textarea.setText("Du nimmst jetzt den Reiter 'Benutzer-Datenquellen/Benutzer-DSN' (erster Reiter) \n" + 
                "und klickst du auf den Knopf 'Hinzufügen...' \n" + 
                "Jetzt erscheint die Treiber-Liste. \n" + 
                "Du wählst du den Treiber 'MySQL ODBC 3.51 Driver' (oder ähnlich) \n" + 
                "und klickst auf 'Fertig stellen'. Das war's dann für 'Windows'. \n\n" + 
                "Jetzt erscheint ein neues Fenster von 'MySQL'. \n\n" + 
                "Im ersten Reiter 'Login' gibt du dies an: \n" + 
                "Data source name = matura \nDescription = matura data \n" + 
                "Server = localhost \n" + 
                "User = test \n" + 
                "Password = test \n" + 
                "Database = matura \n\n" + 
                "Im zweiten Reiter 'Connect Options': \n" + 
                "Port = 3306 \n\n" + 
                "Dann 'OK' klicken, und nochmals 'OK'. \n" + 
                "Fertig!"); 
        getContentPane().add(new JScrollPane(textarea)); 
        try{Runtime.getRuntime().exec("c:\\windows\\system32\\odbcad32.exe");
        }catch (Exception ex) {
            try{Runtime.getRuntime().exec("c:\\winnt\\system32\\odbcad32.exe");
            }catch (Exception ex2) { ex2.printStackTrace();}
        }
        setExtendedState(JFrame.MAXIMIZED_BOTH); 
    } 
    public static void main(String args[]) { new Daten_Quellen().setVisible(true); } 
}
EDIT: letzte Änderung: 27.10.2005 17:40
 

JaLeo

Mitglied
Vielen Dank für deine Mühe.
Habs jetzt hinbracht.. funktioniert super.. :)

einen kleinen fehler hab ich noch beim auslesen..

Code:
[Microsoft][ODBC Driver Manager] Ungültiger Cursorstatus


Code:
			String queryString = "SELECT * FROM `benutzer` WHERE `BenutzerID` =" + benutzerID +" LIMIT 0 , 1";
			ResultSet rsBenutzer = con.dbQuery(queryString);
			
			while(rsBenutzer.next()){
				nickname = rsBenutzer.getString("Nickname");
				name = rsBenutzer.getString("Name");
				NName = rsBenutzer.getString("Nachname");
				email = rsBenutzer.getString("email");
				strasse = rsBenutzer.getString("Strasse");
				ort = rsBenutzer.getString("Ort");
				plz = rsBenutzer.getString("PLZ");
				nation = rsBenutzer.getString("Nation");
			}
			rsBenutzer.close();


dabei gib ich in einem Formular die eingebenen Daten nochmal aus..

Mfg Leo
 

André Uhres

Top Contributor
Dein Code müsste eigentlich funktionieren.
Die Anweisung "while(rsBenutzer.next()){ " stellt sicher, daß in dieser Schleife
kein ungültiger Cursorstatus auftreten kann.
Daher nehme ich an, daß die SQLException an einer anderen Stelle geworfen wird.

[Edit von Andre_Uhres, 29.10.2009 (06:50): Ich habe meinen Beitrag ein wenig gekürzt]
 

JaLeo

Mitglied
Das wär der Source von der ganzen funktion..

Code:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		DBConnect con = new DBConnect();
		String nickname = null;
		String name = null;
		String NName = null;
		String strasse = null;
		String plz = null;
		String ort = null;
		String nation = null;
		String email = null;
		String urlName = null;
		String urlAdresse = null;
		
		RegistrationInfo info = new RegistrationInfo();
		BeanUtilities.populateBean(info,request);
		String benutzerID = null;
		
		/**Neuer Benutzer wird angelegt.*/
		con.dbExecute("INSERT INTO `benutzer` ( `BenutzerID` , `Nickname` , `Name` , `Nachname` , `Passwort` , `email` , `Strasse` , `PLZ` , `Ort` , `Nation` )"+ 
						"VALUES ("+
						"'', '"+ info.getNickname() +"', '"+ info.getName() +"', '"+ info.getNachname() +"', '"+ info.getPasswort() +"', '"+ info.getEmail() + "'," +
						"'"+ info.getStrasse()+ "', '"+ info.getPlz() +"', '"+ info.getOrt() +"', '"+ info.getNation() + "'" +
						");");
		
		//Es wird eine SQL Abrage gesendet, welche BenutzerID der Neue Benutzer hat.
		ResultSet rsID = con.dbQuery("SELECT `BenutzerID` , `Nickname` " +
										"FROM `benutzer` "+
										"WHERE `Nickname` LIKE CONVERT( _utf8 '"+ info.getNickname() +"'"+
										"USING latin1 )" +
										"COLLATE latin1_general_ci");
		
		//BenutzerID wird ausgelesen
		try {
			while(rsID.next() == true){
				benutzerID = rsID.getString("BenutzerID");
				nickname = rsID.getString("Nickname");
				System.out.println(benutzerID);
			
				con.dbExecute("INSERT INTO `url` ( `URLID` , `URLName` , `URLAdresse` , `BenutzerID` , `UserID` )" +
					"VALUES (" +
					"'', '" + info.getUrlName() + "', '" + info.getUrl() + "', '" + benutzerID + "', '0'" +
					")");
			}
		}catch (SQLException SQLex){
			System.out.println("Fehler beim Auslesen der BuntzerID! " + SQLex.toString());
		}
		
		PrintWriter out = response.getWriter();
		
		try{
			//BenutzerID  Nickname  Name  Nachname  Passwort  email  Strasse  PLZ  Ort  Nation
			
			benutzerID = rsID.getString("BenutzerID");
			rsID.close();
			System.out.println(benutzerID);	
			
			String queryString = "SELECT * FROM `benutzer` WHERE `BenutzerID` =" + benutzerID +" LIMIT 0 , 1";
			ResultSet rsBenutzer = con.dbQuery(queryString);
			
			while(rsBenutzer.next()){
				nickname = rsBenutzer.getString("Nickname");
				name = rsBenutzer.getString("Name");
				NName = rsBenutzer.getString("Nachname");
				email = rsBenutzer.getString("email");
				strasse = rsBenutzer.getString("Strasse");
				ort = rsBenutzer.getString("Ort");
				plz = rsBenutzer.getString("PLZ");
				nation = rsBenutzer.getString("Nation");
			}
			rsBenutzer.close();
			
			
			//URLID  URLName  URLAdresse  BenutzerID  UserID 
			queryString = "SELECT * FROM `url` WHERE `BenutzerID` =" + benutzerID +" LIMIT 0 , 1";
			ResultSet rsURL = con.dbQuery(queryString);
			
			while(rsURL.next()){
				urlName = rsURL.getString("URLName");
				urlAdresse = rsURL.getString("URLAdresse");
			}
			rsURL.close();
		} catch (SQLException ex){
			System.out.println("Fehler beim auslesen aus der Datenbank. " + ex.toString());
			System.out.println("MESSAGE: " + ex.getMessage());
		}
		
		finally{
			out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n" +
						"\"http://www.w3.org/TR/html4/loose.dtd\">\n" +
						"<html> \n" +
						"<head> \n" +
						"<title>Webtracer</title> \n"+
						"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n" +
	
						"<style type=\"text/css\">\n" +
						"<!--\n" +
						"body {\n" +
							"background-color: #FFCC33;\n" +
						"}\n" +
						"-->\n" +
						"</style></head>\n" +
						"<body> \n"+
						"<table width=\"715\" height=\"515\" border=\"0\"> \n"+
						"  <tr>  \n"+
						"    <td width=\"705\" valign=\"top\" bgcolor=\"#FFFF66\"><div align=\"left\"> \n"+
						"      <h1>Herzlich Willkommen " + name + " " + NName + "!</h1> \n"+
						"      <h3>&</h3> \n"+
						"      <h3>Ihre pers&nlichen Daten: </h3> \n"+
						"      <div align=\"center\"> \n"+
						"        <table width=\"395\" height=\"163\" border=\"0\"> \n"+
						"            <tr> \n"+
						"              <td width=\"117\">

BenutzerID:</p>            </td> \n"+
						"              <td width=\"268\">" + benutzerID + "</td> \n"+
						"            </tr> \n"+
						"            <tr> \n"+
						"            <tr> \n"+
						"              <td>Nickname:</td> \n"+
						"              <td>"+ nickname +"</td> \n"+
						"            </tr> \n"+
						"              <td>Name:</td> \n"+
						"              <td>"+ name +"</td> \n"+
						"            </tr> \n"+
						"            <tr> \n"+
						"              <td>Nachname:</td> \n"+
						"              <td>"+ NName +"</td> \n"+
						"            </tr> \n"+
						"            <tr> \n"+
						"              <td>Strasse:</td> \n"+
						"              <td>"+ strasse +"</td> \n"+
						"            </tr> \n"+
						"            <tr> \n"+
						"              <td height=\"21\">PLZ:</td> \n"+
						"              <td>"+ plz +"</td> \n"+
						"            </tr> \n"+
						"            <tr> \n"+
						"              <td height=\"21\">Ort:</td> \n"+
						"              <td>"+ ort +"</td> \n"+
						"            </tr> \n"+
						"            <tr> \n"+
						"              <td height=\"21\">Nation:</td> \n"+
						"              <td>"+ nation +"</td> \n"+
						"            </tr> \n"+
						"            <tr> \n"+
						"              <td height=\"21\">e-mail:</td> \n"+
						"              <td>"+ email +"</td> \n"+
						"            </tr> \n"+
						"              </table> \n"+
						"        <h3 align=\"left\">&</h3> \n"+
						"        <h3 align=\"left\">Ihre zu &berwachende URL:</h3> \n"+
						"        <table width=\"387\" border=\"0\"> \n"+
						"          <tr>  \n"+
						"            <td width=\"108\">URL Name:</td> \n"+
						"            <td width=\"263\">"+ urlName +"</td> \n"+
						"          </tr> \n"+
						"          <tr> \n"+
						"            <td>URL Adresse:</td> \n"+
						"            <td>"+ urlAdresse +"</td> \n"+
						"          </tr> \n"+
						"        </table> \n"+
						"        <p align=\"left\">&</p> \n"+
						"        <p align=\"left\">Sie k&nnen Ihre Daten jederzeit unter &Mein Konto& &ndern. </p> \n"+
						"      </div> \n"+
						"    </div></td> \n"+
						"  </tr> \n"+
						"</table> \n"+
						"</body> \n"+
						"</html> \n"); 
			

			con.dbClose();  
		} //try-catch
	} //funktion


Und ausgebn tuts mir:

BenutzerID = 24
Nickname = Leo
Name = null
Nachname = null
usw.

also hauts mich glaub ich bei der gesagten stelle raus

Lg Leo
 

sliwalker

Top Contributor
Ja was denn nun???

phpmyadmin --> MySQl Datenbank oder ODBC --> Access-Datei?

Wenn Du mir das sagts kann ich Dir vllt helfen...
 
G

Guest

Gast
Ich verwende jetzt eine ODBC Bridge mit der ich über JAVA auf die MySQL Datenbank zugreif.

Und über phpmyadmin schau ich ob alles hinghaut hat..
hoff hab deine frage damit beanwortet zu haben.
 

André Uhres

Top Contributor
> also hauts mich glaub ich bei der gesagten stelle raus

Du liegst fast richtig. Die Anweisung die den Fehler auslöst liegt nur etwa 3 Zeilen höher:
"benutzerID = rsID.getString("BenutzerID");"
Wie lösen wir denn das Problemchen?

Lösung 1:
Die besagte Anweisung streichen, da sie sowieso überflüssig ist (sie steht einige Zeilen höher noch einmal).

Lösung 2:
Ersetz bitte dies:
Code:
            while(rsID.next() == true){
durch das:
Code:
            if(rsID.next()){
Du kannst auch beide Lösungen kombinieren.
Beste Grüsse
Andre_Uhres

PS: @sliwalker: dein Zwischenruf hat mich ein wenig :?
 

JaLeo

Mitglied
Vielen Vielen Dank Andre!

Jetzt funktionierts einwandfrei (mit Compiler 1.4) .. bei 5.0 gibts einen fehler..

aber ich werd einfach nur mitn 1.4 copmilieren..

Und nochmals danke für deine Mühe ;)
 

sliwalker

Top Contributor
Andre_Uhres hat gesagt.:
PS: @sliwalker: dein Zwischenruf hat mich ein wenig :?
Na dann. Versteh ich zwar nicht, aber wenn Du meinst.
Mir war nunmal nicht ganz klar was er meint. Ich lese oft (und vor allem nicht mehr so spät) nur über die Texte rüber und achte mehr auf den Quellcode wenn es einen gibt. Dazu kommt noch, das ich die zweite Seite übersehen hab. :/

Aber mit seiner Antwort hat er mir alle Fragen bestens beantwortet.
Kein Grund :? zu sein ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Cast-Fehler: Spring Data exists.... boolean??? Datenbankprogrammierung 1
sonalim21 Data from one Excel workbook in Alteryx Datenbankprogrammierung 0
O HOW TO INSERT PRIMARY INTO ANOTHER TABLE AND USE IT AS FOREIGN KEY TO DISPLAY DATA IN A RELATIONSHIP Datenbankprogrammierung 3
L LOAD DATA INFILE mit Oracle Datenbankprogrammierung 24
Dimax MySQL LOAD DATA INFILE -id aus dem Code und Rest aus dem File. Datenbankprogrammierung 5
B MySQL Data Tools Plattform - "Database Connections" findet den Treiber nicht Datenbankprogrammierung 1
zhermann Data truncation: Incorrect date value: 'null' for column Datenbankprogrammierung 31
B JDBC-Connection: Data source name too long Datenbankprogrammierung 3
E Data truncation Incorrect datetime value Datenbankprogrammierung 2
W No data found: SQL-Abfrage funktioniert nur beim Debuggen Datenbankprogrammierung 3
E falscher Befehl executeQuery() issue data Datenbankprogrammierung 12
K MySQL Load Data InFile Datenbankprogrammierung 7
I java.sql.SQLException: No data found Datenbankprogrammierung 3
Dragonfire Entwurfsfragen zur Anbindung an einer MySQL DB - Klassenstruktur zum Data Model Datenbankprogrammierung 5
M Mit Java Data Objects Daten in einer MySQL-Datenbank manipul Datenbankprogrammierung 9
M java.sql.SQLException: No data found Datenbankprogrammierung 9
T Problem mit Data truncation Datenbankprogrammierung 3
R MySQL denies access to data source - java.sql.SQLException Datenbankprogrammierung 14
G NULL-data processing. Datenbankprogrammierung 11

Ähnliche Java Themen

Neue Themen


Oben