Avatar billede cow-tilter Nybegynder
01. august 2003 - 17:56 Der er 12 kommentarer og
1 løsning

MySQL og JSP - Dato for oprettelse

I min database har jeg nogle poster der bliver vist på siden. I forbindelse med det, skal jeg have datoen samt tidspunktet for oprettelse af posten, også skrevet på siden.

Min sql fil ser således ud:
DROP TABLE IF EXISTS wall;
CREATE TABLE wall (
id int(4) NOT NULL auto_increment,
text text NOT NULL,
date datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`) ) TYPE=MyISAM;


Når jeg beder om at få datoen, får jeg bare default, altså 0000-00-00 00:00:00. Hvordan får jeg det rigtige tidspunkt?
Avatar billede arne_v Ekspert
01. august 2003 - 18:00 #1
Du får vel default fordi feltet indeholder default.

Du skal have gemt tidspunktet når du gemmer recorden.

Altså med:
  INSERT INTO wall (text,date) VALUES ('Dette er en tekst', '2003-08-01 18:00:00')
Avatar billede arne_v Ekspert
01. august 2003 - 18:01 #2
Jeg har iøvrigt meget gode erfaringer med at bruge PreparedStatement
og setDate i.s.f. Statement og en streng representation til at
håndtere datoer med.
Avatar billede cow-tilter Nybegynder
01. august 2003 - 18:04 #3
Kan jeg ikke få den til at gøre det automatisk?
Avatar billede cow-tilter Nybegynder
01. august 2003 - 18:04 #4
Kan du uddybe det med PreparedStatement og setDate lidt?
Avatar billede arne_v Ekspert
01. august 2003 - 18:06 #5
Du skal nok bruge Timestamp.

SÅ bliver det:

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO wall (text,date) VALUES (?,?)");

pstmt.setString(1,"Dette er en tekst");
pstmt.setTimestamp(2,new Timestamp((new Date()).getTime()));
Avatar billede arne_v Ekspert
01. august 2003 - 18:07 #6
Og hvis vi siger at teksten kommer fra et form felt ved navn text så bliver det:

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO wall (text,date) VALUES (?,?)");

pstmt.setString(1,request.getParameter("text"));
pstmt.setTimestamp(2,new Timestamp((new Date()).getTime()));
Avatar billede arne_v Ekspert
01. august 2003 - 18:07 #7
new Timestamp((new Date()).getTime())

skulle blive til *nu*.
Avatar billede arne_v Ekspert
01. august 2003 - 18:08 #8
Og så er det:

pstmt.executeUpdate();

for at udføre INSERT - det er en lile smule vigtigt !  :-)
Avatar billede cow-tilter Nybegynder
01. august 2003 - 18:16 #9
Skal jeg skrive det sådan:

<%
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO wall
(text,date) VALUES (?,?)");
 
pstmt.setString(1,"Dette er en tekst");
pstmt.setTimestamp(2,new Timestamp((new Date()).getTime()));
pstmt.executeUpdate();
%>
Avatar billede arne_v Ekspert
01. august 2003 - 18:22 #10
Ja.
Avatar billede arne_v Ekspert
01. august 2003 - 18:23 #11
Forudsat at du har en Connection med navn conn - hvis du har kaldt
den noget andet skal du bruge det navn.
Avatar billede arne_v Ekspert
01. august 2003 - 18:24 #12
Og for at undgå import problemer så brug:

pstmt.setTimestamp(2,new Timestamp((new java.util.Date()).getTime()));
Avatar billede cow-tilter Nybegynder
03. august 2003 - 18:30 #13
tjaa, det virker jo. Så må du hellere få dine points.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester