JSP - problem z dodaniem elementu do bazy danych

0

Witam,

Mam taki kod:

 <%
    Connection conn = null;
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    conn = DriverManager.getConnection("jdbc:sqlserver://" + "127.0.0.1" + "\\" + "SQLEXPRESS" + ":" + "1433" + ";databaseName=" + "KsiazkaTelefoniczna","Alexwielki","dupa");
    Statement stmt = conn.createStatement();
    stmt.executeQuery("insert into main('IMIE','NAZWISKO','NUMER') values('AAA','BBB','CCC')");
%>

Po kompliacji dostaje stronke JSP z errorami:

 HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Invalid column name 'IMIE'.
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:498)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

root cause

javax.servlet.ServletException: Invalid column name 'IMIE'.
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:76)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

root cause

com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'IMIE'.
	com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197)
	com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1493)
	com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:775)
	com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:676)
	com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
	com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
	com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179)
	com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154)
	com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:611)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:60)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.31 logs.
Apache Tomcat/5.5.31

co tu jest zle? gdy zastapie inserta np select * from main, to nie rzuca bledami.

Bardzo prosze o pomoc!

1

Invalid column name 'IMIE' - jest dość jasne.
Nie ma kolumny 'IMIE' w tabeli main. Jeżeli wywala się na SQL, spróbuj odpalić je na bazie.
Nie wiem na jakiej bazie pracujesz ale podejrzewam, że jeżeli obsługuje ona nazwy kolumn case-sensitve wówczas powinieneś je podawać w cudzysłowie:

stmt.executeQuery("insert into main(\"IMIE\",\"NAZWISKO\",\"NUMER\") values('AAA','BBB','CCC')");
1

Ok connection url... SQLEXPRESS : P
Już wiem jakiej bazy używasz hehe.

0

Wrzuciłem ten kod i dalej nie działa..

Martwi mnie ta linijka:
javax.servlet.ServletException: The statement did not return a result set.

Może trzeba użyć innych typów przy selecie a innych przy wrzucanbiu czegoś do bazy?

1

Zamiast executeQuery użyj executeUpdate

0

Dziękiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii !!

Tutaj kod może się przyda - przy okazji pytanko: jak zrobić guziki na stronie, bo tak jak tu dziala ale nie chce okienka tylko guzik na stronce...

<%-- 
    Document   : index
    Created on : 2011-01-03, 23:46:29
    Author     : Aleksander
--%>

<%@page import="java.awt.FlowLayout"%>
<%@page import="javax.swing.JButton"%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.lang.*" %>
<%@ page import="java.lang.*" %>

<%
    Connection conn = null;
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    conn = DriverManager.getConnection("jdbc:sqlserver://" + "127.0.0.1" + "\\" + "SQLEXPRESS" + ":" + "1433" + ";databaseName=" + "KsiazkaTelefoniczna","Alexwielki","dupa");
    Statement stmt = conn.createStatement();
    stmt.executeUpdate("insert into main(\"IMIE\",\"NAZWISKO\",\"NUMER\") values('AAA','BBB','CCC')");
%>

<%
 JFrame rama = new JFrame("Ramka");
 rama.setVisible(true);
 JButton guziczek = new JButton("Zapisz");
 rama.add(guziczek);

%>
<HTML>
    <BODY>
        Siema! Wypisz sie!
    </BODY>

</HTML> 
0
<%
 JFrame rama = new JFrame("Ramka");
 rama.setVisible(true);
 JButton guziczek = new JButton("Zapisz");
 rama.add(guziczek);
%>

Hehe. Chcialbym zobaczyc mine admina, ktory bedzie hostowal takiego *.jsp

kizdas napisał(a)

jak zrobić guziki na stronie, bo tak jak tu dziala ale nie chce okienka tylko guzik na stronce...

Uzyj formularzy HTML.

0

Hmmm, dopiero się uczę i zrobiłem coś takiego:

<%-- 
    Document   : index
    Created on : 2011-01-03, 23:46:29
    Author     : Aleksander
--%>

<%@page import="javax.swing.JFrame"%>
<%@page import="java.awt.FlowLayout"%>
<%@page import="javax.swing.JButton"%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.lang.*" %>
<%@ page import="java.lang.*" %>

<%
    Connection conn = null;
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    conn = DriverManager.getConnection("jdbc:sqlserver://" + "127.0.0.1" + "\\" + "SQLEXPRESS" + ":" + "1433" + ";databaseName=" + "KsiazkaTelefoniczna","Alexwielki","dupa");
    Statement stmt = conn.createStatement();
    //stmt.executeUpdate("insert into main(\"IMIE\",\"NAZWISKO\",\"NUMER\") values('AAA','BBB','CCC')");

    String imie;
    String nazwisko;
    String numer;
%>


<HTML>
    <BODY>
        <FORM METHOD=POST ACTION="zapisujemyWaldus.jsp">

            Imie <INPUT TYPE=TEXT NAME=imie SIZE=20> <br>
            Nazwisko <INPUT TYPE=TEXT NAME=nazwisko SIZE=20> <br>
            Numer <INPUT TYPE=TEXT NAME=numer SIZE=20> <br>

            <P><INPUT TYPE=SUBMIT>
        </FORM>
    </BODY>

</HTML>

Zrobilem cos takiego,

Tylko teraz jak zapisac do zmiennych String te wartosci z pol? Potem je wrzuce do kodu, ktory mam u gory ibedzie hulalo...moglby ktos podpowiedziec?

1

Wartosci z pol formularza przechowywane sa w HttpServletRequest. Obiekt tej klasy jest niejawnie tworzony przez web-container i dostepny automatycznie w *.jsp pod przewrotna nazwa: request. Do wyluskania wartosci konkretnych pol sluzy metoda String getParameter(String nazwaPolaFormularza) lub String[] getParameterValues(String nazwaPolFormularza)

0
ws napisał(a)

Wartosci z pol formularza przechowywane sa w HttpServletRequest. Obiekt tej klasy jest niejawnie tworzony przez web-container i dostepny automatycznie w *.jsp pod przewrotna nazwa: request. Do wyluskania wartosci konkretnych pol sluzy metoda String getParameter(String nazwaPolaFormularza) lub String[] getParameterValues(String nazwaPolFormularza)

<html> <body> <form method="POST" action="pozapisie.jsp">
        Imie <INPUT TYPE=TEXT NAME=addimie SIZE=20> <br>
        Nazwisko <INPUT TYPE=TEXT NAME=addnazwisko SIZE=20> <br>
        Numer <INPUT TYPE=TEXT NAME=addnumer SIZE=20> <br>
        <% String imie = getParameter("addimie");%>
        <P><INPUT TYPE=SUBMIT>
    </FORM>
</BODY>
</html>

wrzuciłem takie coś i dalej nie działa...

1 użytkowników online, w tym zalogowanych: 0, gości: 1