2015-01-21 57 views
1

我试图连接到mySQL DB,并在我的Java应用程序的3列osName,version,notes中执行Insert。教程im以下是http://alvinalexander.com/java/java-mysql-insert-example-preparedstatement。任何输入或评论都很有帮助。这是我的数据库信息 -MySQL Java数据插入错误

CREATE TABLE oslogentryosName VARCHAR(10)NOT NULL, version VARCHAR(10)NOT NULL, notes VARCHAR(20)NOT NULL, PRIMARY KEY(osName) )ENGINE = InnoDB的;

package com.tutorialspoint.struts2; 

import java.sql.*; 

import com.opensymphony.xwork2.ActionSupport; 

public class HelloWorldAction extends ActionSupport{ 
private String osName; 
private String version; 
private String notes; 

public String execute() throws Exception { 
    return "success"; 
} 
{ 

     try 
     { 
      // created a datbase connection 
      String myDriver = "org.gjt.mm.mysql.Driver"; 
      String myURL = "jdbc:mysql://localhost/HelloWorld"; 
      Class.forName(myDriver); 
      Connection conn = DriverManager.getConnection(myURL, "root", ""); 

      //insert statement 

      String query = "INSERT INTO oslog.entry (osName,version,notes " + 
      "values osName, version, notes"; 

      //mysql insert preparedstatement 

      PreparedStatement preparedStmt = conn.prepareStatement(query); 
      preparedStmt.setString(1, osName); 
      preparedStmt.setString(2, version); 
      preparedStmt.setString(3, notes); 
      //excute the preparedstatement 
      preparedStmt.execute(); 
      conn.close(); 

     } 
     catch(Exception e) 
     { 
      System.err.println("Got an Exception!"); 
      System.err.println(e.getMessage()); 
     } 


} 




    public String getOsName() { 
    return osName; 
} 
public void setOsName(String osName) { 
    this.osName = osName; 
} 
public String getVersion() { 
    return version; 
} 
public void setVersion(String version) { 
    this.version = version; 
} 
public String getNotes() { 
    return notes; 
} 
public void setNotes(String notes) { 
    this.notes = notes; 
} 

public void validate() 
{ 
    if (osName == null || osName.trim().equals("")) 
    { 
     addFieldError("osName","The OS name is required"); 
    } 
    if (version == null || version.trim().equals("")) 
    { 
     addFieldError("version","The OS version is required"); 
    } 
} 
} 
+0

我相信你需要围绕你的查询值的圆括号;你还没有关闭第一轮支架(围绕栏目名称)。 – adamdc78 2015-01-21 01:22:50

+0

什么是错误? – 2015-01-21 01:22:56

+0

不返回错误。无论发生什么,我都有我的jsp和行动取得成功。 – Kyas 2015-01-21 02:43:19

回答

2

我看你使用PreparedStatement 您需要从改变你的query字符串:

String query = "INSERT INTO oslog.entry (osName,version,notes " + 
     "values osName, version, notes"; 

String query = "INSERT INTO oslog.entry(osName,version,notes) " + 
     "values (?, ?, ?)"; 
+0

String query =“INSERT INTO oslog.entry(osName,version,notes)”+ “values (?,?,?)“;这并没有解决它。我没有任何错误出现。 – Kyas 2015-01-21 03:26:40

2

您使用PreparedStatement,所以您的查询应该有占位符。试试这个:

String query = "INSERT INTO oslog.entry (osName,version,notes) " + 
      "values (?, ?, ?)"; 
+0

“你的SQL语法错误;检查对应于你的MySQL服务器版本的手册,在第一行使用'values null,null,null'附近的正确语法”是我得到的错误。 – Kyas 2015-01-21 08:12:38

+0

@Kyas这是因为你永远不会初始化你传递给'preparedStmt'('osName','version','notes')的变量,而你的表不接受'null'这些列。 – Titus 2015-01-21 10:30:03

+0

我可以更改我的表,但我将如何初始化变量? – Kyas 2015-01-21 18:58:26