Toon posts:

CSV file upload en wegschrijven naar SQLDB Doormiddel van

Pagina: 1
Acties:
  • 378 views

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste Tweakers,

Ik worstel al een tijdje met een code om csv files te uploaden en wil deze opslaan in mijn mysql database die op een apache server draait.Ik maak gebruik van JSP en wil doormiddel van een Stringtokenizer het bestand regel voor regel inlezen en dan deze gegevens in een array plaatsen om ze dan vervolgens 1 voor 1 weg te schrijven naar de juiste kolom in de database!Wat de code tot nu toe doet is het tonen van het volledige bestand in mijn scherm.Hiervoor gebruik ik een println.out om te testen of mijn bestand wel wordt geladen. Dit moet worden vervangen door een query die de arrays wegschrijft naar de database!

Java Server Page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<%@ page import="java.io.*,java.sql.*" %>
<html>
<%
String contentType = request.getContentType();
if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {
DataInputStream in = new DataInputStream(request.getInputStream());
int formDataLength = request.getContentLength();
byte dataBytes[] = new byte[formDataLength];
int byteRead = 0;
int totalBytesRead = 0;


while (totalBytesRead < formDataLength) {
byteRead = in.read(dataBytes, totalBytesRead, formDataLength);
totalBytesRead += byteRead;
}
String file = new String(dataBytes);
String saveFile = file.substring(file.indexOf("filename=\"") + 10);
System.out.println("saveFile=" + saveFile);
saveFile = saveFile.substring(saveFile.lastIndexOf("\\")+ 1,saveFile.indexOf("\""));
System.out.println("saveFile" + saveFile);
saveFile = file.substring(file.indexOf("filename=\"") + 10);
saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
saveFile = saveFile.substring(saveFile.lastIndexOf("\\")+ 1,saveFile.indexOf("\""));
int lastIndex = contentType.lastIndexOf("=");
String boundary = contentType.substring(lastIndex + 1,contentType.length());
int pos;

pos = file.indexOf("filename=\"");
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
int boundaryLocation = file.indexOf(boundary, pos) - 4;
int startPos = ((file.substring(0, pos)).getBytes()).length;
int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;

FileOutputStream fileOut = new FileOutputStream(saveFile);
fileOut.write(dataBytes, startPos, (endPos - startPos));
%>
<b>File <% out.println(saveFile); %> has been uploaded and inserted into Database.</b>
<%Connection con=null;
String db = "jdbc:mysql://localhost:3306/jenw";
String usr = "root";
String pwd = "testing";

Statement st = null;
Statement pst=null;
String line = null;
String value=null;
try{
StringBuilder contents = new StringBuilder();
BufferedReader input = new BufferedReader(new FileReader(saveFile));
while (( line = input.readLine()) != null){
contents.append(line);
}
value = contents.toString();
System.out.println("Value:"+value);
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection(db,usr,pwd); 
pst=con.createStatement();
out.println(value);
int val = pst.executeUpdate("insert into klant(klant_postcode, klant_huisnummer) values('"+value+"')");
}
catch(Exception e)
{   out.print(e.getMessage());
//out.println("+value+");
} 
}
%>
</html>

Alvast bedankt !

[ Voor 0% gewijzigd door Creepy op 04-12-2008 12:52 ]


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Wat is nu je vraag? Vervang gewoon die printline door een query.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:11

Creepy

Tactical Espionage Splatterer

En wat heb je zelf al geprobeerd en wat lukte daar niet mee? Alleen je code dumpen en aangeven wat het moet doen is hier niet genoeg ;) Zie ook PRG Beleid

offtopic:
Ik heb gelijk je post even wat leesbaarder gemaakt. Gebruikt aub [code] tags om code te plaatsen.

[ Voor 24% gewijzigd door Creepy op 04-12-2008 12:54 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja sorry ik ben gewoon ten einde raad....ik heb zelf al geprobeerd import java.util.StringTokenizer; boven te importeren daarna StringTokenizer st = new StringTokenizer (s, ";"); gebruikt om aan te geven dat na elke ; het gegeven moet worden afgebroken en in een arrays moet worden geplaatst. Hieronder zie je mijn Tokenizer code, maar ik krijg foutmeldingen als ik het wil runnen!

sLine = br.readLine();
StringTokenizer st = new StringTokenizer(sLine, ";", true);

tokens = new String[st.countTokens()];

//load the array of tokens
for( i = 0 ; i < tokens.length ; i++ ) tokens[ i ] = new String( "" ) ;

iCount = 0 ;

while (st.hasMoreElements())
{
String storeit = st.nextToken().trim();
if( storeit.equals( "," ) )
{
iCount++ ;
}
else
{
tokens[iCount] = storeit;
}
}
--------------------------------------------------------------------------------------------------------------------------------------------------

Aan: Noork ik heb er een query instaan als je onderaan mijn code kijkt alleen voert hij deze niet uit:(

Als iemand weet hoe ik dus deze cvs file in mijn database kan opslaan graag suggesties _/-\o_

Acties:
  • 0 Henk 'm!

  • Spiral
  • Registratie: December 2005
  • Niet online
Verwijderd schreef op donderdag 04 december 2008 @ 12:41:
SQL:
1
int val = pst.executeUpdate("insert into klant(klant_postcode, klant_huisnummer) values('"+value+"')");
In iedergeval is je insert fout. Daarnaast is je huidige code onoverzichtelijk, probeer alleen de code te posten waar het fout gaat

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Misschien handig om de foutmeldingen hier te melden? Wat en waar gaat het mis?

En voor de duidelijkheid, het uploaden gaat dus goed, en de uitvoer van de sql heeft hier nog niks mee nodig? Probleem ligt hem dus bij het uitlezen van de csv. Wellicht kun je hiervoor ook complete Java classe voor gebruiken, zie b.v. http://forums.sun.com/thread.jspa?threadID=541784

p.s. Ik ken niks van JSP en Java. Maar het lijkt me dat debuggen voor elke taal hetzelde gaat. Dus doe gewoon een printline o.i.d. van de foutmeldingen. Sluit regels uit door te commenten e.d.

Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 00:26
Verwijderd schreef op donderdag 04 december 2008 @ 12:41:
...
Dit moet worden vervangen door een query die de arrays wegschrijft naar de database!
...
Alvast bedankt !
En wat is de vraag? Of denk je dat er nu iemand voor je aan het werk gaat en het voor je maakt? Zo lijkt het nu wel een beetje: een zooitje onleesbare code neerplempen en afwachten maar...

[ Voor 12% gewijzigd door sig69 op 04-12-2008 13:27 ]

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:11

Creepy

Tactical Espionage Splatterer

antilliangenius: lees mijn vorige post nu eens echt door aub ;)
Daarnaast zijn er zat oplossingen te vinden door even google te gebruiken. Het lijkt me heel sterk dat daar niks bruikbaars tussen zit.
Leuk dat je foutmeldingen krijgt. Mijn glazen bol is stuk dus ik heb geen idee welke foutmeldingen dat zijn en wat je nu zelf al hebt geprobeerd om dat op te lossen.

[ Voor 29% gewijzigd door Creepy op 04-12-2008 13:32 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Er zijn idd heel wat verhalen op het internet te vinden die vast en zeker bruikbaar lijken..Alleen lukt het mij niet vandaar deze post..ik kan begrijpen dat mensen irriteren dat het een beetje onoverzichtelijk is* mijn welgemeende excusses hiervoor*! Alleen ik post namelijk nooit op fora;s dus vandaar waarschijnlijk mijn overtredingen:$..De laatste foutmelding die ik krijg na het uploaden van mijn bestand is:Alles wat er in de file staat wordt op het scherm geladen met aan het eind een melding :"Column count doesn't match value count at row 1"

Acties:
  • 0 Henk 'm!

  • Spiral
  • Registratie: December 2005
  • Niet online
Spiral schreef op donderdag 04 december 2008 @ 13:20:
[...]


In iedergeval is je insert fout. Daarnaast is je huidige code onoverzichtelijk, probeer alleen de code te posten waar het fout gaat
Verwijderd schreef op donderdag 04 december 2008 @ 13:48:
De laatste foutmelding die ik krijg na het uploaden van mijn bestand is:Alles wat er in de file staat wordt op het scherm geladen met aan het eind een melding :"Column count doesn't match value count at row 1"

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles


Acties:
  • 0 Henk 'm!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 21:35

voodooless

Sound is no voodoo!

Verwijderd schreef op donderdag 04 december 2008 @ 13:48:
"Column count doesn't match value count at row 1"
Dan moet er toch wel een belletje gaan rinkelen lijkt me. Kijk eens waar die foutmelding vandaan komt. Staat vast ook wel een trace bij...

Verder verwijs ik maar even naar Spiral in "CSV file upload en wegschrijven naar SQL..."

Do diamonds shine on the dark side of the moon :?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Query veranderd geen resultaat..geprobeerd maar 1 kolom weg te schrijven maar krijg nog steeds dezelfde melding!..Ik wil juist de file stukjes knippen en per kolom wegschrijven doormiddel van een stringtokenizer..wie weet hoe dit moet!

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:11

Creepy

Tactical Espionage Splatterer

Zoals ik nu al heb geprobeert uit te leggen werkt het hier niet zo. Got is een discussie forum en geen helpdesk. Lees nu aub PRG Beleid eens door zodat je weet hoe het hier in PRG werkt en neem ook even Het algemeen beleid #topicplaatsen door zodat je weet hoe het hier op GoT werkt.

Ga er nu zelf eens echt mee aan de slag en ga eens goed kijken naar de meldingen die je krijgt en probeer deze op m'n minste deze te begrijpen. We willen je best helpen maar het moet niet zo zijn dat wij het voor je moeten gaan maken natuurlijk, dan huur je maar iemand in.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.