18. september 2001 - 10:35Der er
9 kommentarer og 2 løsninger
Indsæt i Access2000 notat-felt som string - hvorfor virker det ikke?
Vi øver med JDBC:ODBC connection til Access2000. Det går fint med insert og select, SÅ LÆNGE vi ikke prøver at indsætte en String i et felt, der er defineret som notatfelt - (memo) Hvordan indsætter man tekst i sådan et felt med et \"INSERT INTO (Memofeltet) values (\"Her er en ufattelig lang tekst\")
- Og hvordan arbejder man generelt bedst med memofelt-længder på op til 65.000 tegn i Java, som string???
INSERT INTO Members ( [LongText] ) values (\'Her er en lang tekst\')
Det virker både med pinger (\') og med anførselstegn (\") rundt om teksten
Men vi kan generelt heller ikke tildele indholdet af et memo-felt til en String i java, da fejler systemet, uden at gå i den exception vi prøver at stille op for det.
Vi har altså følgende situation: - Vi kan ikke skrive i et memo-felt i Access
- Vi kan godt SELECTE værdien af et memofelt og skrive på skærm med: System.out.println(resultSet.getString(\"LongText\") men... - Vi kan ikke sige: String copyLongText = resultSet.getString(\"LongText\"); Dette giver følgende fejl: java.sql.SQLException: No data found , men data ER der jo, for jeg kan println med dem...?
Det er sådan set også kun opstarten mht access - systemet skal køre på MS SQL 2000, men da har man jo en pendant til memofeltet, så derfor skulle det helst kunne køre - desuden er vi jo så \"platformsuafhængige\" og skal gerne kunne bruge systemet overfor en hvilken som helst DB... - Nå, men jeg håber der er andre, der kan se, hvad jeg gør galt, eller som definitivt ved, at jeg er i en dead-end...
Har du prøvet at kigge på metadata fra dit resultset:
ResultSetMetaData rsmd = resultSet.getMetaData(); for (int i = 1, max = rsmd.getColumnCount() ; i <= max ; i++) system.out.println(rsmd.getColumnName(i) + \" \" + rsmd.getColumnClass(i) + \" \" + rsmd.getColumnType(i));
column types vil matche en konstant i java.sql.Types: public class Types { public final static int BIT = -7; public final static int TINYINT = -6; public final static int SMALLINT = 5; public final static int INTEGER = 4; public final static int BIGINT = -5; public final static int FLOAT = 6; public final static int REAL = 7; public final static int DOUBLE = 8; public final static int NUMERIC = 2; public final static int DECIMAL = 3; public final static int CHAR = 1; public final static int VARCHAR = 12; public final static int LONGVARCHAR = -1; public final static int DATE = 91; public final static int TIME = 92; public final static int TIMESTAMP = 93; public final static int BINARY = -2; public final static int VARBINARY = -3; public final static int LONGVARBINARY = -4; public final static int NULL = 0; public final static int OTHER = 1111; public final static int JAVA_OBJECT = 2000; public final static int DISTINCT = 2001; public final static int STRUCT = 2002; public final static int ARRAY = 2003; public final static int BLOB = 2004; public final static int CLOB = 2005; public final static int REF = 2006; }
Hmm...Jeg vil meget gerne have skåret ud i pap. Jeg kan ikke finde nogle eksempler på at anvende BLOB og/eller CLOB, derfor:
jeg ville virkelig kunne bruge, hvis det kunne vises, hvordan man så arbejder med CLOB/BLOB\'erne... Mit LongText-felt er iflg metadataene = -1, dvs. LONGVARCHAR. Hvordan arbejder jeg med den... Er der en, der vil prøve at vise, hvordan man selecter et memofelt i access, og overfører det til en variabel (et objekt).
Prøv at tage dit memo fra dit resultset: Object o = resultSet.getObject(\"Nemo\"); Class[] c = o.getClass().getDeclaredClasses(); for (int i = 0 ; i < c.length ; i++) { String ci = c[i].isInterface() ? \"Interface \" : \"class \"; System.out.println(ci + c[i].getName()); }
Tag den her: Class clazz = resultSet.getObject(\"LongText\").getClass(); while(clazz != null) {
System.out.println(clazz.getName()); Class[] interfaces = clazz.getInterfaces(); for (int i = 0 ; i < interfaces.length ; i++) { System.out.println(\"Interface>\" + interfaces[i].getName()); } clazz = clazz.getSuperclass(); } Hvordan mener den så, det kan repræsenteres?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.