# Inser SQL



## Cjava (30. Dez 2009)

Hallo!

Ich arbeite grad an einer Datenbank. Auf der HTML Seite soll man einen Text eingeben können, sowie den Titel und Autor. Das soll alles dann in meiner MySQL-DB gespeichert werden.
Soweit scheint jetzt alles gut zu sein, nur kriege ich immer folgende Fehlermeldung: 
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '')' at line 1


Hier mal die beiden Codeausschnitte, vieleicht kann mir ja der ein oder andere weiterhelfen ^^


```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<TITLE>AddUser.jsp</TITLE>
</HEAD>
<BODY>
<form name = form1 method = post action = "Addtxt.jsp">
<TABLE border="1">
    <TBODY>
        <TR>
            <TD>Autor:</TD>
            <TD><INPUT size="30" type="text" name="autor"></TD>
        </TR>
        <TR>
            <TD>Titel:</TD>
            <TD><INPUT size="30" type="text" name="titel"></TD>
        </TR>
        <TR>
        <TD>Text:</TD>
        	<TD><INPUT size="2000" type="text" name="text" ></TD>
        </TR>
        
        </TBODY>
        </TABLE>
      
        	
 
<P><INPUT type="submit" name="Save" value="Speichern"></P>
</form>
</BODY>
</HTML>
[code=Java]
<%@ page  import = "java.sql.*"%>
<HTML>
<HEAD>
<META name="GENERATOR" content="IBM WebSphere Studio">
<TITLE>Addtxt.jsp</TITLE>
</HEAD>
<%! 
    Connection conn;
    Statement stmt;
    String text, autor, titel = "";
    
    String SQL;
   
   
   public void OpenConnection()
   {
    
     try
      {
    	 Class.forName("com.mysql.jdbc.Driver").newInstance(); 
      }
      catch(Exception e)
      {
	      System.out.println(e.toString());   

      }
      try
      {
	      conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/carlipso","root","***");
      }
      catch(Exception e)
      {
	      System.out.println("Could not load Driver"); 

      }	
      
	} // end Openconnection
   
    public void InsertUsers(String autor, String titel, String text)
	{
		 try
	   	{
			stmt = conn.createStatement(); //connect the statement to the connection 
		

			SQL ="insert into tex(autor,titel,text) values('" + autor + "','" + titel + "'," + text + "')";     			
	      	stmt.executeUpdate(SQL);
	
	   	} 
	    
	   catch(SQLException ee)
	   {
		  System.out.println(ee);
		  
	   }
		
	} //end InsertUsers
%>
<%
	  OpenConnection();

      autor = request.getParameter("autor");
	  titel = request.getParameter("titel");
	  text 	= request.getParameter("text");
	
      InsertUsers(autor, titel, text);
	
      out.println(SQL);
      
      conn.close();
      stmt.close();
%>
<BODY>
Place Addtxt.jsp's content here
</BODY>
</HTML>


[/code]
```


----------



## Meldanor (30. Dez 2009)

SQL ="insert into tex(autor,titel,text) values('" + autor + "','" + titel + "',*[HOCHKOMMA MISSING]*" + text + "')"; 
Da fehlt ein Hochkomma

SQL ="insert into tex(autor,titel,text) values('" + autor + "','" + titel + "','" + text + "')";


----------



## homer65 (30. Dez 2009)

Übrigens macht man sowas am besten mit einem PreparedStatement, wenn man variable Wert hatt. Hier mal ein Beispiel:

```
String sql = "insert into scanner.main";
		sql += " (name,kommentar,ordner)";
		sql += " values (?,?,?)";
		try
		{
			PreparedStatement stmt = con.prepareStatement(sql);
			stmt.setString(1,sm.getName());
			stmt.setString(2,sm.getKommentar());
			stmt.setString(3,sm.getOrdner());
			stmt.executeUpdate();
			stmt.close();
		}
		catch (SQLException e)
		{
			Protokol.write("MySQL:main:Exception:");
			Protokol.write(e.toString());
			System.exit(8);
		}
```


----------

