08. marts 2004 - 10:18Der er
21 kommentarer og 1 løsning
Problemer med insættelse i MS SQL database fra Java.
Jeg har et problem når jeg indsætter noget i min database fra java, ved hjælp af prepared statements. Den fylder feltet helt ud. Eks. jeg har et felt der er af typen varchat(10) og jeg sætter noget ind på 6, så smider den selv 4 spaces på i enden. Her er noget java kode. Håber nogen kan hjælpe. public void createGroup(String groupAlias, String groupName, String groupDescription, String isClass) { con = DBConnect.getConnection(); try { PreparedStatement stmt = con.prepareStatement( "insert into Groups (groupAlias, groupName, isClass, groupDescription) " + "values (?,?,?,?)"); stmt.setString(1, groupAlias); stmt.setString(2, groupName); stmt.setString(3, isClass); stmt.setString(4, groupDescription);
Det er varchar(n)... Ved ikke lige hvad padded er for noget, men jeg har kontrolleret strengene inden jeg kalser setString på dem og der fylder de kun det de skal...
nu ved jeg heller ikke helt præcist hvor meget den fylder lige netop på den. Men der bliver i hvert fald fyldt noget på... og ja jeg har kontrolleret min tabel definition.
Prøv at sætte en sql profiler trace op på din server, begræns tracen til aktuelle database (filter på db id) og tilføj SQL Statements til tracen.
Start så tracen og afvikl derefter din java applet. Når dit statement er kørt stopper du tracen.
Nu vil du i tracen kunne se den præcise SQL der sendes til din server. Er strengene her padded (fyldt ud) så er problemet i din Java Applet, er de ikke fyldt ud, så er problemet i din SQL Server opsætning.
Jeg kender ikke meget til Java (kan stave til det, men det er næsten også det :-) - men hvis du har en "metadata import" af tabel-definitioner til applikationen så bør du refreshe den.
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.