获取Java mysql SQL语法错误,但我的查询似乎正常
我正在开发一个简单的基于JavaMySQL的应用程序,在将数据插入数据库的过程中,我遇到了下面提到的SQL错误 这是我的密码:获取Java mysql SQL语法错误,但我的查询似乎正常,java,mysql,jdbc,syntax-error,sql-insert,Java,Mysql,Jdbc,Syntax Error,Sql Insert,我正在开发一个简单的基于JavaMySQL的应用程序,在将数据插入数据库的过程中,我遇到了下面提到的SQL错误 这是我的密码: public DBConnection() { try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&us
public DBConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&useLegacyDatetimeCode=false&serverTimezone=Turkey", "root", "");
st = con.createStatement();
System.out.println("CONNECTED!");
} catch (Exception e) {
System.out.println("Error : " + e);
}
}
下面是我添加数据的java主方法:
public static void main(String[] args) {
// TODO code application logic here
Customers c1 = new Customers();
c1.setIsim("test");
c1.setSoyisim("test");
c1.setSirket("test");
c1.setAdres("test");
c1.setIletisim("test");
DBConnection db = new DBConnection();
db.addCustomer(c1.isim, c1.soyisim, c1.sirket, c1.adres, c1.iletisim);
}
我得到的错误是:
向数据库添加值时出错:java.sql.SQLSyntaxErrorException:您的sql语法有错误;检查与您的MariaDB服务器版本相对应的手册,了解第1行“插入musteri(ad、soyad、sirket、adres、iletisim)值(?、、?、?)”附近使用的正确语法
我建议您像这样实施
addCustomer
。使用本地语句
并使用try with resource样式创建它,然后为查询设置参数
public void addCustomer(String name, String surname, String company, String adress, String adressTwo){
String addQuery = "insert into musteri (name,surname,company,adress,adressTwo) values (?,?,?,?,?)" ;
try (PreparedStatement stmt = con.prepareStatement(addQuery)) {
stmt.setString(1, name);
stmt.setString(2, surname);
stmt.setString(3, company);
stmt.setString(4, adress);
stmt.setString(5, adressTwo);
stmt.executeUpdate();
System.out.println("Data Added");
} catch (Exception e) {
System.out.println("Error occured when adding value to database : " + e );
}
}
你把陈述和准备好的陈述混为一谈。您应该使用准备好的语句并为其设置值:
public void addCustomer(String name, String surname, String company, String address, String adressTwo) {
String addQuery = "insert into musteri (name, surname, company, adress, adressTwo) values (?,?,?,?,?)" ;
// Shown here for simplicitly.
// The query could be prepared once and stored in a data member
try (PreparedStatement ps = con.prepareStatement(addQuery)) {
ps.setString(1, name);
ps.setString(2, surname);
ps.setString(3, company);
ps.setString(4, address);
ps.setString(5, addressTwo);
ps.executeUpdate();
System.out.println("Data Added");
} catch (Exception e) {
System.out.println("Error occured when adding value to database : " + e );
}
}
您是否设置了preparedstatement参数?另外,我建议将语句创建为方法中的局部变量,而不是重复使用某些类成员或全局变量是的,我在添加正常值时设置了prepared st.Btw,而不是?其工作正常。显示
addCustomer
的完整代码,包括设置参数的位置所显示的错误“insert into musteri(ad,soyad…”与发布的代码不匹配“insert into musteri(name,姓氏…”-还缺少参数设置(如addQuery.setString(…
)非常感谢!现在我明白我的错误了。谢谢大家的关注。
public void addCustomer(String name, String surname, String company, String address, String adressTwo) {
String addQuery = "insert into musteri (name, surname, company, adress, adressTwo) values (?,?,?,?,?)" ;
// Shown here for simplicitly.
// The query could be prepared once and stored in a data member
try (PreparedStatement ps = con.prepareStatement(addQuery)) {
ps.setString(1, name);
ps.setString(2, surname);
ps.setString(3, company);
ps.setString(4, address);
ps.setString(5, addressTwo);
ps.executeUpdate();
System.out.println("Data Added");
} catch (Exception e) {
System.out.println("Error occured when adding value to database : " + e );
}
}