如何将文本框中的数据插入到 java-netbeans 中的 mysql 数据库中

Posted

技术标签:

【中文标题】如何将文本框中的数据插入到 java-netbeans 中的 mysql 数据库中【英文标题】:how to insert data from textboxes into mysql database in java-netbeans 【发布时间】:2013-08-31 13:30:55 【问题描述】:

我是编程新手,我正在尝试使用 netbeans IDE 制作一个小型 Java swing 应用程序,我已经设计了表单并创建了一个表,我使用以下代码将数据从表单插入到数据库中,但我得到了许多错误请帮助我更正此代码:

import java.sql.*;
public class db

  static final String JDBC_DRIVER="com.mysql.jdbc.Driver";
  static final String DB_URL = "jdbc:mysql://localhost:3306/userdb";
  static final String USER="root";
  static final String PASS="toor";

  Connection conn = null;
  Statement stmt = null;
  static final String d_unit=jTextField2.getText();
  static final String d_name=jTextField3.getText();
  static final String d_dob=jDateChooser2.getText();
  //static final String d_gender="gender";
  static final String d_age=jTextField4.getText();
  static final String d_doorno=jTextField5.getText();
  static final String d_street=jTextField6.getText();
  static final String d_vc=jTextField7.getText();
  static final String d_district=jTextField8.getText();
  static final String d_pin=jTextField9.getText();
  static final String d_phone=jTextField10.getText();
  static final String d_mail=jTextField11.getText();
  static final String d_occupations=jTextField12.getText();
  try
  
     Class.forName("com.mysql.jdbc.Driver");
     conn=DriverManager.getConnection(DB_URL,USER,PASS);
     stmt = conn.createStatement();
     stmt.executeUpdate("insert into donors (unit,name,dob,age,doorno,street,vc,district,pin,phone,mail,occupation) values('"+d_unit+"','"+d_name+"','"+d_dob+"','"+d_age+"','"+d_doorno+"','"+d_street+"','"+d_vc+"','"+d_district+"','"+d_pin+"','"+d_phone+"','"+d_mail+"','"+d_occupations+"')");
     JOptionPane.showMessageDialog(null,"Inserted Successfully!");
     
    catch(Exception e)
         

   

【问题讨论】:

@Gerret 我认为这里的问题是编译时错误。 您将所有值插入为VARCHAR。这些实际上是否定义为数据库中的 varchars?例如doornoage 看起来像整数。我也强烈建议使用PreparedStatement 而不是Statement。见Using PreparedStatement @Axel 很好,问题解释得不是很好!标题实际上不是主题......但是好的^^ 什么是堆栈跟踪?? @杰瑞特 【参考方案1】:

你可能不使用final String,因为,那么你不能修改这些字符串,而其他代码是正确的,但我认为你可以在该行中使用?

String sql="INSERT INTO ´donors´ (unit,name) VALUES (?,?)";
    //put the rest of the sentence
      try 
        PreparedStatement pdt = cn.prepareStatement(sql);
        pdt.setString(1, jTextField2.getText();
        pdt.setString(2, jTextField3.getText();
        //put the rest of the code
        int n1=pdt.executeUpdate();
      if(n1>0)
      
      JOptionPane.showMessageDialog(null,"Inserted Successfully!");
      
      catch (SQLException ex)  

嗯,这是最大的方式,但也是最正确的。我希望这会有所帮助。

【讨论】:

我尝试了将数据插入 mysql 表的方法,但仍然无法插入数据我收到很多错误这里是我的完整代码粘贴,你能帮我解决问题吗?这是我的馅饼link 好的,但我需要你有错误的行和错误异常的类型 这里是导致错误的行和对应的错误 static final String JDBC_DRIVER="com.mysql.jdbc.Driver";/*Illegal start of expression*/ Class.forName("com .mysql.jdbc.Driver");/*非法启动类型*/ conn=DriverManager.getConnection(DB_URL,USER,PASS);/*找不到符号*/ stmt = conn.createStatement();/*未报告的Sql异常必须被捕获或抛出*/ PreparedStatement pdt = conn.prepareStatement(sql);/*必须捕获或抛出未报告的 Sql 异常*/ pdt.setString(1,jTextField2.getText());/*Identifier expected*/ still 您在该代码中的问题是您在此方法中将变量声明为static finalprivate void jButton1ActionPerformed(java.awt.event.ActionEvent evt)。这是不正确的。查看this tutorial 以更好地了解使用static 修饰符。【参考方案2】:
private void btnSaveActionPerformed(java.awt.event.ActionEvent evt)                                         
    String itemCode = txtItemCode.getText();
    String itemName = txtItemName.getText();
    String unitPrice = txtUnitPrice.getText();
    String qty = txtQty.getText();
    String query = "insert into items values ('"+itemCode+"','"+itemName+"','"+unitPrice+"','"+qty+"')";
    System.out.println(query);


    try 
        Connection c = DBClass.getConnection();
        Statement stmt = c.createStatement();
        stmt.executeUpdate(query);
        JOptionPane.showMessageDialog(this, "Saved");
     catch (Exception e) 
        e.printStackTrace();
    

// 数据库类

import java.sql.Connection;
import java.sql.DriverManager;

/**
 *
 * @author Nadun
 */
public class DBClass 

    static private Connection  connection;

    public static Connection getConnection() throws Exception
        if(connection == null)
            //JDBC
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/stock", "root", "123");
        
        return connection;
    


【讨论】:

【参考方案3】:

一切看起来都很好。也许问题出在你的mysql数据库上?

在mysql中检查你的行的数据类型,如果你当前行的数据类型是“int”,那么应该是这样的

try

 Class.forName("com.mysql.jdbc.Driver");
 conn=DriverManager.getConnection(DB_URL,USER,PASS);
 stmt = conn.createStatement();
 stmt.executeUpdate("insert into donors (name, age) values('"+d_name+"',,'"+Integer.valueOf(d_age.getText().toString())+"')");
 JOptionPane.showMessageDialog(null,"Inserted Successfully!");
 
catch(Exception e)     


您应该小心数据类型。如果你的 mysql 行是 int 类型,那么在你的 java 中你也应该给它 int 时间。

我猜你的“name”行的数据类型是使用字符串的文本,而你的“age”行的数据类型是int?

我检查您的代码是否将一个字符串值从您的 java 提供给您的 int mysql 行。这就是错误。

所以你应该先将字符串转换为int

Integer.valueOf(d_age.getText().toString());

【讨论】:

【参考方案4】:

为简单起见,尝试像这样进行操作并减少出错

String sql = "INSERT INTO donors(unit,name,dob,age,doorno,street,vc,district,pin,phone,mail,occupation) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
stmt.executeUpdate(sql);

【讨论】:

以上是关于如何将文本框中的数据插入到 java-netbeans 中的 mysql 数据库中的主要内容,如果未能解决你的问题,请参考以下文章

python如何在文本框中输入信息插入到数据库

如何将 mysql 中的数据插入到组合框中?

如何将数据框中的连接值插入到 Pyspark 中的另一个数据框中?

如何将选中的项目从checkedlistbox 插入SQL 数据库?

无法在文本框中插入数字

如何使用命令按钮在文本框中的现有文本中插入新文本?