插入数据发生异常:You have an error in your SQL syntax; check the manual that corresponds

彳卸风 2012-05-16 10:51:10
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
本人菜鸟级别 7_7


import java.sql.DriverManager;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.swing.*;

public class Addvalue {
private String driver = "com.mysql.jdbc.Driver";
private String url ="jdbc:mysql://127.0.0.1:3306/luke";
private String user = "root";
private String pass = "671792";
// private String sql ="insert into jdbc_test values(?,?)";
private JFrame jf = new JFrame("添加数据窗口");
private JLabel us = new JLabel("请输入用户名");
private JTextField use = new JTextField(15);
private JLabel ps = new JLabel("请输入密码");
private JPasswordField pas = new JPasswordField(15);
private JLabel pps = new JLabel("确认密码");
private JPasswordField pas2 = new JPasswordField(15);
private JButton inse = new JButton("确定添加数据");
private JButton reset = new JButton("重置信息");
/**
* 创建添加窗口
*/
public void init() throws Exception {
Class.forName(driver);
jf.setLayout(new GridLayout(4, 2, 1, 1));
jf.add(us);
jf.add(use);
jf.add(ps);
jf.add(pas);
jf.add(pps);
jf.add(pas2);
jf.add(reset);
jf.add(inse);
jf.setBounds(500, 400, 260, 152);
// jf.setSize(260, 152);
jf.setVisible(true);
inse.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (use.getText().length() == 0 ) {
JOptionPane.showMessageDialog(jf, "请检查输入");
}
else if(use.getText().length()!=0 && pas.getPassword()!=null)
{
insert("use","pas");
JOptionPane.showMessageDialog(jf, "添加数据成功");

use.setText("");
pas.setText("");
pas2.setText("");
}}
});
reset.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent a) {
use.setText("");
pas.setText("");
pas2.setText("");
}
});
}

public void insert(String uuu, String ppp) {
char[] s = null;
s = pas.getPassword();
uuu = use.getText();
ppp = new String(s);
String sq ="insert into zhuce values(?,?)";
// String sq ="insert into jdbc_test values(uuu,ppp)";
try (Connection conn = DriverManager.getConnection(url, user, pass);
PreparedStatement pstmt = conn
.prepareStatement(sq)) {
// 获取密码域的内容
pstmt.setString(1, uuu);
pstmt.setString(2, ppp);
// pstmt.executeQuery(sq);
pstmt.executeUpdate(sq) ;
if (pas.getPassword() == pas2.getPassword() ) {
insert("uuu", "ppp");
// JOptionPane.showMessageDialog(jf, "添加数据成功");
return;
}
} catch (SQLException ex) {
System.out.println("插入数据发生异常:" + ex.getMessage());
}
}

public static void main(String[] args) throws Exception {
(new Addvalue()).init();
}
}
...全文
430 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
彳卸风 2012-05-17
  • 打赏
  • 举报
回复
[Quote]
自增的语句也不一样、 mysql 是……
[/Quote]


请问加上ID 字段后添加数据的代码应该怎样该 怎样调用插入函数
数据库是使用MYSQL 创建的 字段就三个 U_id ,uus, pps
调用时还是出错
最后一次 之后结贴。。
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 4 楼 的回复:

引用 2 楼 的回复:



。。。 连id 都没有。。
被打败了、


根据你的理解我应该怎样建表
具体一点
最好给出代码……………………
[/Quote]

个人见解、

起码每个表都应该有个id字段吧、 要么怎么证明这些数据的唯一性、?

建表语句也分数据库的、

自增的语句也不一样、 mysql 是 auto increment
oracle 是创建序列 sequence

具体点的方式还是baidu或者google吧、
  • 打赏
  • 举报
回复
还有就是俩个密码框里的内容比对得这样

if (pas.getText().equals(pas2.getText()))

还是去吃饭吧我、

  • 打赏
  • 举报
回复
insert(use.getText(), pas.getPassword().toString());
修改成
insert(use.getText(), pas.getText());

没咋用过swing、
hugo000002020 2012-05-16
  • 打赏
  • 举报
回复

try (//你这是括号
Connection conn = DriverManager.getConnection(url, user, pass);
PreparedStatement pstmt = conn.prepareStatement(sq)) {//你的花括号在这里 汗 eclipse能编译通过?
// 获取密码域的内容
pstmt.setString(1, uuu);
pstmt.setString(2, ppp);
// pstmt.executeQuery(sq);
pstmt.executeUpdate(sq) ;
if (pas.getPassword() == pas2.getPassword() ) {//还有字符串比较是pas!=null && pas.getPassword().equals(pas2.getPassword())问题很多啊
insert("uuu", "ppp");
// JOptionPane.showMessageDialog(jf, "添加数据成功");
return;
}
} catch (SQLException ex) {
System.out.println("插入数据发生异常:" + ex.getMessage());
}

你给出的You have an error in your SQL syntax; check the manual that corresponds 这个是sql syntax问题,检查你的sql,把这个sql放到数据库那边去跑一下看能不能跑通。
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 1 楼 的回复:

insert into table_name(c_1, c_2, c_3) values(v_1, v_2, v_3); 先看下你的数据库表到底有几个字段,如果超过两个,记得写上你的字段,如果只有两个,可以忽略...还有,你的代码有很多问题..我也懒得看了,发现个严重的,两个String是否相等,是这样判断的, s1.equals(s2)


楼主的数据……
[/Quote]

重新缕了次。。。


package com.boyu.util;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class Addvalue {
private String driver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://127.0.0.1:3306/luke";
private String user = "root";
private String pass = "671792";
// private String sql ="insert into jdbc_test values(?,?)";
private JFrame jf = new JFrame("添加数据窗口");
private JLabel us = new JLabel("请输入用户名");
private JTextField use = new JTextField(15);
private JLabel ps = new JLabel("请输入密码");
private JPasswordField pas = new JPasswordField(15);
private JLabel pps = new JLabel("确认密码");
private JPasswordField pas2 = new JPasswordField(15);
private JButton inse = new JButton("确定添加数据");
private JButton reset = new JButton("重置信息");

/**
* 创建添加窗口
*/
public void init() throws Exception {
Class.forName(driver);
jf.setLayout(new GridLayout(4, 2, 1, 1));
jf.add(us);
jf.add(use);
jf.add(ps);
jf.add(pas);
jf.add(pps);
jf.add(pas2);
jf.add(reset);
jf.add(inse);
jf.setBounds(500, 400, 260, 152);
// jf.setSize(260, 152);
jf.setVisible(true);
inse.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (use.getText().length() == 0) {
JOptionPane.showMessageDialog(jf, "请检查输入");
} else if (use.getText().length() != 0
&& pas.getPassword() != null) {
insert(use.getText(), pas.getPassword().toString());
JOptionPane.showMessageDialog(jf, "添加数据成功");

use.setText("");
pas.setText("");
pas2.setText("");
}
}
});
reset.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent a) {
use.setText("");
pas.setText("");
pas2.setText("");
}
});
}

public void insert(String uuu, String ppp) {

char[] s = null;
s = pas.getPassword();
uuu = use.getText();
ppp = new String(s);
String sq = "insert into zhuce values(?,?)";
// String sq ="insert into jdbc_test values(uuu,ppp)";
try {
Connection conn = DriverManager.getConnection(url, user, pass);
PreparedStatement pstmt = conn.prepareStatement(sq);

// 获取密码域的内容
pstmt.setString(1, uuu);
pstmt.setString(2, ppp);
// pstmt.executeQuery(sq);
pstmt.executeUpdate(sq);
} catch (SQLException ex) {
System.out.println("插入数据发生异常:" + ex.getMessage());
System.exit(0) ;
}

}

public static void main(String[] args) throws Exception {
(new Addvalue()).init();
}
}

  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

这个…………
1 字段确实就两个
2 代码问题确实不少
3 ………………
加分略了 …………
[/Quote]

。。。 连id 都没有。。
被打败了、


  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

insert into table_name(c_1, c_2, c_3) values(v_1, v_2, v_3); 先看下你的数据库表到底有几个字段,如果超过两个,记得写上你的字段,如果只有两个,可以忽略...还有,你的代码有很多问题..我也懒得看了,发现个严重的,两个String是否相等,是这样判断的, s1.equals(s2)
[/Quote]

楼主的数据库表字段肯定不是2个、最起码3个 id 、name 、pass

而楼主的sql 语句肯定有问题 就是1楼说的、表字段和values值要对应、

至于你id自增不自增就不知道了、


感觉楼主那try的有问题呢、把你代码拷了我这全是错误、

给改了改顺序、和String 比对问题、贴出来


package com.boyu.util;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class Addvalue {
private String driver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://127.0.0.1:3306/luke";
private String user = "root";
private String pass = "671792";
// private String sql ="insert into jdbc_test values(?,?)";
private JFrame jf = new JFrame("添加数据窗口");
private JLabel us = new JLabel("请输入用户名");
private JTextField use = new JTextField(15);
private JLabel ps = new JLabel("请输入密码");
private JPasswordField pas = new JPasswordField(15);
private JLabel pps = new JLabel("确认密码");
private JPasswordField pas2 = new JPasswordField(15);
private JButton inse = new JButton("确定添加数据");
private JButton reset = new JButton("重置信息");

/**
* 创建添加窗口
*/
public void init() throws Exception {
Class.forName(driver);
jf.setLayout(new GridLayout(4, 2, 1, 1));
jf.add(us);
jf.add(use);
jf.add(ps);
jf.add(pas);
jf.add(pps);
jf.add(pas2);
jf.add(reset);
jf.add(inse);
jf.setBounds(500, 400, 260, 152);
// jf.setSize(260, 152);
jf.setVisible(true);
inse.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (use.getText().length() == 0) {
JOptionPane.showMessageDialog(jf, "请检查输入");
} else if (use.getText().length() != 0
&& pas.getPassword() != null) {
insert("use", "pas");
JOptionPane.showMessageDialog(jf, "添加数据成功");

use.setText("");
pas.setText("");
pas2.setText("");
}
}
});
reset.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent a) {
use.setText("");
pas.setText("");
pas2.setText("");
}
});
}

public void insert(String uuu, String ppp) {
if (pas.getPassword().equals(pas2.getPassword())) {
char[] s = null;
s = pas.getPassword();
uuu = use.getText();
ppp = new String(s);
String sq = "insert into zhuce values(?,?)";
// String sq ="insert into jdbc_test values(uuu,ppp)";
try {
Connection conn = DriverManager.getConnection(url, user, pass);
PreparedStatement pstmt = conn.prepareStatement(sq);

// 获取密码域的内容
pstmt.setString(1, uuu);
pstmt.setString(2, ppp);
// pstmt.executeQuery(sq);
pstmt.executeUpdate(sq);
} catch (SQLException ex) {
System.out.println("插入数据发生异常:" + ex.getMessage());
return ;
}
}
}

public static void main(String[] args) throws Exception {
(new Addvalue()).init();
}
}


彳卸风 2012-05-16
  • 打赏
  • 举报
回复
这个…………
1 字段确实就两个
2 代码问题确实不少
3 ………………
加分略了 …………
我意纵横 2012-05-16
  • 打赏
  • 举报
回复
insert into table_name(c_1, c_2, c_3) values(v_1, v_2, v_3); 先看下你的数据库表到底有几个字段,如果超过两个,记得写上你的字段,如果只有两个,可以忽略...还有,你的代码有很多问题..我也懒得看了,发现个严重的,两个String是否相等,是这样判断的, s1.equals(s2)
彳卸风 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 2 楼 的回复:



。。。 连id 都没有。。
被打败了、
[/Quote]

根据你的理解我应该怎样建表
具体一点
最好给出代码……………………
彳卸风 2012-05-16
  • 打赏
  • 举报
回复
/
数据库的字段确实只有两个 yhm 跟mim
多谢了各位 ……
不看不知道一看下一跳 阿 9_9

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧