Java sql插入作业窗格
试图在Java中向数据库中插入一行。它只插入第一列,我不知道为什么。代码如下:Java sql插入作业窗格,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,试图在Java中向数据库中插入一行。它只插入第一列,我不知道为什么。代码如下: @Override public void actionPerformed(ActionEvent e) { // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. int x = 1; i
@Override
public void actionPerformed(ActionEvent e) {
// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
int x = 1;
int limit;
//promts the user to enter input
// String InputString = JOptionPane.showInputDialog(null, "Enter the Number of Countries: ",JOptionPane.QUESTION_MESSAGE);
// limit = Integer.parseInt(InputString);
Connection connection;
PreparedStatement ps;
try {
String dbName = "osdesign";
String dbUserName = "root";
String dbPassword = "";
//String u = jtfuser.getText();
//String p =jpfpass.getName();
String connectionString = "jdbc:mysql://localhost/" + dbName + "?user="
+ dbUserName + "&password=" + dbPassword
+ "&useUnicode=true&characterEncoding=UTF-8";
connection = DriverManager.getConnection(connectionString);
JOptionPane.showMessageDialog(null, "Connected!");
//int x = 1;
User List = new User();
//User[] List = new User [limit];
//String query;
//for (x = 0; x < limit; x++)
// {
///List[x] = new User();
//List[x].User_type = null;
List.input(x);
//String sql = "INSERT into `userlist` (`UsrCode`, `UsrName`, `UsrPass`, `UsrPassChgDays`, `UsrPassChgDate`, `Usrtype`) VALUES( ?, ?, ?, ?, ?, ?);";
PreparedStatement preparedStmt = connection.prepareStatement("INSERT INTO `userlist`" +
"VALUES( ?, ?, ?, ?, ?, ?);");
String ID = List.ID;
String name = List.name;
preparedStmt.setString(1, ID);
preparedStmt.setString(2, name);
preparedStmt.setString(3, List.password);
preparedStmt.setString(4, List.Usr_PassChgDays);
preparedStmt.setString(5, List.data_of_passChg);
preparedStmt.setString(6, List.User_type);
preparedStmt.executeUpdate();
//btnlogin.equals(result);
// panel.add(btnlogin);
// panel.add(jpfpass.getName(),btnlogin);
if (preparedStmt.equals(true)) {
JOptionPane.showMessageDialog(null, "Great sucess!!!");
//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} else {
JOptionPane.showMessageDialog(null, "FUCK!!!");
}
//JOptionPane.showMessageDialog(null, "User sucessfully created");
} catch (SQLException ex) {
Logger.getLogger(RychlikSystemversion0.class.getName()).log(Level.SEVERE, null, ex);
}
}
@覆盖
已执行的公共无效操作(操作事件e){
//抛出新的UnsupportedOperationException(“尚未受支持”);//若要更改生成的方法体,请选择“工具”“模板”。
int x=1;
整数极限;
//提示用户输入信息
//String InputString=JOptionPane.showInputDialog(null,“输入国家数量:”,JOptionPane.QUESTION_消息);
//limit=Integer.parseInt(InputString);
连接;
编制报表;
试一试{
字符串dbName=“osdesign”;
字符串dbUserName=“root”;
字符串dbPassword=“”;
//字符串u=jtfuser.getText();
//字符串p=jpfpass.getName();
字符串连接String=“jdbc:mysql://localhost/“+dbName+”?用户=”
+dbUserName+“&password=“+dbPassword”
+“&useUnicode=true&characterEncoding=UTF-8”;
connection=DriverManager.getConnection(connectionString);
showMessageDialog(空,“已连接!”);
//int x=1;
用户列表=新用户();
//用户[]列表=新用户[限制];
//字符串查询;
//对于(x=0;x
在互联网上到处搜索,尝试了各种技巧,我真的很困惑。有人能帮我吗?请编辑SQL查询删除;结束查询
PreparedStatement preparedStmt = connection.prepareStatement("INSERT INTO `userlist`" +
"VALUES( ?, ?, ?, ?, ?, ?)**;**");
您必须确保Java中的数据类型与数据库中列的数据类型匹配。例如,
preparedStmt.setString(1,ID);
应为preparedStmt.setInt(1,ID);
!!我将数据库值更改为varchar,但它仍然会给我带来问题。程序对您发誓,因此它不会插入行。我最初的想法与@Kh.Taheri相同。数据库表中的ID列是字符串数据类型还是整数数据类型?它现在到底是什么?列表是否确实包含任何内容?测试把它放到控制台:System.out.println(List.ID);System.out.println(List.name);System.out.println(List.password)
等。仍然做同样的事情,只是打印出ID。它只将数据插入主键,这真的很奇怪。我知道它连接到数据库,因为我有一个运行正常的登录swing框架。您从未在列表
上设置我们可以看到的任何值。正如我对您的另一个问题所做的评论,您确实需要调试以查看实际上,您已经有了所需的值。在这种情况下,您还可以首先尝试在setString
方法中使用显式文字值来表示值2-6,以查看问题实际上是否与数据库代码或User
类有关(据我们所知,您没有进行初始化,只是设置了它的id,所以所有字段很可能仍然是null
)。否则,发布一个包含所有相关代码的MCVE。为什么?MySQL不喜欢它吗?我认为所有数据库系统都接受结尾带有分号的SQL语句。毕竟,这是在数据库系统中分隔每个SQL语句的标准方法,允许在对服务器的同一次调用中执行多个SQL语句。对于某些数据库系统这是绝对必要的。有些系统不需要它,t-SQL可能现在也不需要它……但很快就会需要它。@DevilsHnd不一定,在某些数据库系统中,它只是客户端中的分隔符,而不是服务器本身(因此CLI知道语句何时完成并可以发送到服务器执行)。虽然给出了问题中的信息,但我同意这可能不是原因。@Mark Rotterveel-在某些情况下。正如我在之前的评论中所述:“某些系统不需要它…”@DevilsHnd IIRC,如果您没有将MySQL连接器/J设置为允许同时执行多个语句,则它不允许使用;
(JDBC期望每个执行一条语句)。