# Datentypen und MySql



## MySQL (19. Jan 2006)

Hallo
ich möchte in einer Datenbnk folgendes abspeichern 

INT(1);
BOOL;

Jetzt wie ich gesehen habe gibt es kein Bool oder. Welchen Dadentyp nimmt man denn nun am besten für die beiden
in einer MySql Datenbank und vor allem auch in Java? Gibt es Probleme beim schreiben von int Java 4 Byte zu INT(1) in der SQL Datenbank. Was passiert wenn der zu groß ist. Was ist zu beachten. Momentan habe ich für BOOl einen INTT(1) was ja nicht so toll is. Aber gibt es wirklich einen Wert der weniger Speicher braucht als ein Byte? 

Wie konvertiere ich bool zu int;

Vielen Dank 

Schöne Grüße


----------



## bronks (19. Jan 2006)

MySQL hat gesagt.:
			
		

> ... weniger Speicher braucht als ein Byte? ...


Ein Bool verbraucht immer und überall mindestens 1 Byte




			
				MySQL hat gesagt.:
			
		

> ... Wie konvertiere ich bool zu int; ...


Konvertieren ist nicht nötig, da ein bool eine Ganzzahl ist, bei der das letzte Bit gesetzt ist oder auch nicht, was letztendlich einem Wert von 1 oder 0 entspricht.


----------



## Guest (19. Jan 2006)

Hi aber wie konvertiere ich denn in java. Ist vielleicht eine komische Frage

public class test 
{
	public int inttest = 1;
	public boolean booltest = false;

	public test()
	{
	inttest = booltest; // Hab hier gibt es Fehler typemismatch
	booltest=inttest;
	inttest = (int)booltest;// kann die Typen nicht casten
	booltest=(boolean)inttest;
	}
}


Schöne Grüße


----------



## MYSQL (19. Jan 2006)

Hi 

und wie verhindere ich zum Beispiel einen Datenverlust von int nach INT(1)?

Vielen Dank schonmal


----------



## Bleiglanz (19. Jan 2006)

> Another extension is supported by MySQL for optionally specifying the display width of an integer value in parentheses following the base keyword for the type (for example, INT(4)). This optional display width specification is used to left-pad the display of values having a width less than the width specified for the column.



INT(1) = INT( 8 ) = INT für deine Belange


----------



## MySQL (19. Jan 2006)

Ja ich weiß haufen doofer Fragen. Aber wie machen das jetzt mit dem Bool,

public class test 
{ 
public int inttest = 1; 
public boolean booltest = false; 

public test() 
{ 
inttest = booltest; // Hab hier gibt es Fehler typemismatch 
booltest=inttest; 
inttest = (int)booltest;// kann die Typen nicht casten 
booltest=(boolean)inttest; 
} 
} 

Schöne Grüße


----------



## Bleiglanz (19. Jan 2006)

in java ist eine Umwandlung unmöglich und unnötig

schau mal java.sql.ResultSet und java.sql.PreparedStatement an, dann siehst du wie man mit der DB kommuniziert

WENN du aber aus irgendwelchen Gründen boolsche Variablen in INTEGER Spalten abgelegt hast, dann gehts eben so

boolean spalteSoUndso = (0 < rs.getInt("datenbankspaltenname")); // je nachdem wie...


----------



## MySQL (19. Jan 2006)

Ok 

kann ich denn einen boolschen Wert in einer Datenbank erzeugen mit mysql habe ich es nicht geschaft

Vielen Dank für Deine Hilfe


----------



## semi (19. Jan 2006)

BIT = BOOL = TINYINT(1) in MySQL


----------



## Bleiglanz (19. Jan 2006)

CREATE TABLE test ( spalte BOOL )

BOOL ist eben nur ein Synonym tür TINYINT, und TRUE und FALSE werden von mysql automatisch in 1 und 0 übersetzt


----------



## MySQL (23. Jan 2006)

Hi

ich verstehs immer  noch nicht. Wenn ich in der Datanbank ein INT(10) habe hat das eine länge von 10 Byte. Wenn ich dann in Java dafür ein Wert int nehme 4 Bate groß kann es doch zum Datenverlust kommen oder?

Schöne Grüße

MySQL


----------



## Bleiglanz (24. Jan 2006)

nein, RTFM

kannst du lesen, dann siehe oben


> Another extension is supported by MySQL for optionally specifying the display width of an integer value in parentheses following the base keyword for the type (for example, INT(4)). This optional display width specification is used to left-pad the display of values having a width less than the width specified for the column.



RTFM!

mysql> create table foobar ( zahl int(1), zahl2 int(10))
mysql> insert into foobar values (12345,12345);
mysql> select * from foobar;
+-------+-------+
| zahl  | zahl2 |
+-------+-------+
| 12345 | 12345 |
+-------+-------+


----------



## Guest (24. Jan 2006)

AAAhh
tut mir leid das habe ich wirklich überlesen. Viele Dank für Deine Geduld

Schöne Güße


----------

