2012-04-04 9 views
0

Bitte schlagen Sie mir das Stück Code zum Löschen einer Zeile aus einer MySQL-Datenbank, die drei Spalten Problemid, Problem und Lösung enthält. Ich möchte es aus einem Browser löschen, d. H. Es ist eine Webanwendung.Löschen einer Zeile aus der MySQL-Datenbank in einer Webanwendung

+0

Verwenden Sie gerade JDBC oder ein ORM-Tool wie Hibernate? –

+0

gerade JDBC @JacoVanNiekerk – P3M

+0

Sie müssen möglicherweise auf http://StackOverflow.com/faq schauen –

Antwort

1

Sie können die Verwendung der API JDBC (Java Database Connectivity) für Ihr Problem in Betracht ziehen. Ich empfehle Ihnen, die folgenden einfachen Tutorials zur Entwicklung von Java Web Applications mit einer MySQL Datenbank genau zu betrachten.

https://blogs.oracle.com/JavaFundamentals/entry/creating_a_simple_web_application

http://www.javaguicodexample.com/javawebmysqljspjstljsf5.html

+0

Ich brauche Stück Code, nicht das Tutorial – P3M

+0

Die Tutorials enthalten Beispielcodes und Programme sowie.Da Sie weder Ihren Code zur Verfügung stellen, den Sie bisher entwickelt haben, noch Sie ausführlich über das informieren, was Sie gerade erreichen wollen, ist dies alles, was ich für jetzt tun könnte. –

-2

Es ist so einfach Kumpel, zunächst einmal müssen Sie einen Link zu einer Servlet von jsp machen. Und mit diesem Link müssen Sie die gelöschte Datensatz-ID übergeben als Parameter & Schreiben Sie den Code im Servlet zum Löschen der angegebenen Zeile aus der Datenbank. Und dann die gleiche Seite, auf die der vorherige Link geklickt hat, zurückgeben.

+1

Bitte beachten Sie [wie Sie eine Antwort schreiben] (http://meta.stackexchange.com/questions/7656/how-do-i-write-a-good-answer-to-a-question). – nobeh

+0

Ich habe mein Bestes gegeben, aber es gibt ein Problem, das ich nicht herausfinden kann, bitte beantworten Sie den Code mit dieser Abfrage zum Löschen und den Code, der innerhalb des Servlets zum Löschen sein sollte. – P3M

+0

@ prem: "Es gibt ein Problem" ist eine schlechte Sache. Als Programmierer. Du solltest niemals so sagen. Schreiben Sie immer Code mit Fehler –

0

Hier ist ein Beispiel Servlet.

Aber bitte denken Sie daran gerade ist, Ihnen zu zeigen, wie es geht, Sie sollte nicht diese Verwendung in einem produktiven System! Diese mehr für die Demonstration ist, um es so aussehen, wie und lernen, wie man es tun. Dieses Servlet sollte gut laufen, aber es gibt einige Dinge, die Sie tun müssen!

Auf jeden Fall sollten Sie diese Dokumente lesen, wenn Sie nicht bereits

http://docs.oracle.com/javaee/5/tutorial/doc/bnadp.html

http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html

Dinge getan haben, die ich berücksichtigt haben, während ich dies schrieb:

Parameter anfragen

Wenn einer der Anforderungsparameter nicht gefunden werden kann, wird eine Ausnahme ausgelöst. Sie brauchen einen besseren Umgang mit dieser Situation.

Connection Pooling

dieses Beispiel wird eine Verbindung zur Datenbank bei jeder Anfrage geöffnet. Das Öffnen einer Verbindung kostet Zeit. Daher benutzt jeder einen Verbindungspool. Diese Bibliothek/dieser Server öffnet eine bestimmte Anzahl von Verbindungen zur Datenbank. Immer wenn Sie auf die Datenbank zugreifen müssen, holen Sie sie aus diesem Pool und wenn Sie fertig sind, geben Sie sie in den Pool zurück.

Sicherheit

Jemand, der die Adresse dieses Servlet kennt, könnte es leicht verwendet jede Zeile in der Tabelle zu löschen. Dies ist Ihre Aufgabe, um es zu sichern.

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.sql.*; 

    /** 
    * DON'T USE IN PRODUCTION, JUST FOR LEARNING PURPOSES 
    **/ 
public class MySqlServlet extends HttpServlet { 

    public void doGet(HttpServletRequest request, HttpServletResponse response) 
           throws ServletException, IOException { 

    long problemId; 
    long problem; 
    long solution; 

    Object problemIdAsObject = request.getParameter("problemId"); 
    Object problemAsObject = request.getParameter("problem"); 
    Object solutionAsObject = request.getParameter("solution"); 

    if (problemIdAsObject == null){ 
     throw new ServletException("problemId has not been specified!"); 
    } 

    if (problemAsObject == null){ 
     throw new ServletException("problem has not been specified!"); 
    } 

    if (solutionAsObject == null){ 
     throw new ServletException("solution has not been specified!"); 
    } 

    problemId = Long.valueOf((String)problemIdAsObject); 
    problem = Long.valueOf((String)problemAsObject); 
    solution = Long.valueOf((String)solutionAsObject);  

    PreparedStatement statement = null; 
    Connection connectionToDatabase = null; 
    try{ 
     connectionToDatabase = getConnection(); 
     String sql = "DELETE FROM table WHERE problemid = ? and "+ 
         "problem = ? and solution = ?"; 
     statement = connectionToDatabase.prepareStatement(sql); 
     statement.setLong(1,problemId); 
     statement.setLong(2,problem); 
     statement.setLong(3,solution); 
     statement.execute(); 
    }catch(SQLException sqle){ 
     throw new ServletException(sqle); 
    }catch(ClassNotFoundException cnfe){ 
     throw new ServletException(cnfe); 
    }finally{ 
     try{ 
      statement.close(); 
      connectionToDatabase.close(); 
     }catch(SQLException sqle){ 
      throw new ServletException(sqle); 
     } 
    } 

    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 

    out.println("<HTML>"); 
    out.println("<BODY>"); 
    out.println("OK"); 
    out.println("</BODY></HTML>"); 
    } 

    private Connection getConnection() 
      throws ClassNotFoundException,SQLException{ 

      String userName = "user"; 
    String password = "password"; 
    String databaseName = "database"; 
    String serverAddress = "localhost"; 

    String connectionString = "jdbc:mysql://"+serverAddress+"/"+databaseName+ 
       "?user="+userName+"&password="+password; 
      //If this line is not working, use this instead: 
      //Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    Class.forName("com.mysql.jdbc.Driver");  
    Connection connection = DriverManager.getConnection(connectionString); 
    return connection; 
    } 

} 
Verwandte Themen