这是我第一次在这里发帖,但我真的有麻烦了。
我有一张员工表:
EMPLOYEE_ID非空数(6)
FIRST_NAMEVARCHAR2(20)
LAST\u NAME NOT NULL VARCHAR2(25)
电子邮件不为NULL VARCHAR2(25)
PHONE_NUMBERVARCHAR2(20)
HIRE\u DATE非空日期
JOB_ID不为空VARCHAR2(10)
工资编号(8,2)
委员会PCT编号(2,2)
MANAGER\u ID号(6)
部门ID号(4)
我需要插入下一条记录:
INSERT INTO employees VALUES (307,'Alfredo','Garcia','alfredgad','222222', TO_DATE('07-JUN-1994', 'dd-MON-yyyy'),'AC_ACCOUNT',8300,NULL,205,110);
我有下一个代码:
我的班级Conexion
package nomina;
import java.io.*;
import java.sql.*;
import javax.swing.*;
public class Conexion {
static Connection conn=null;
static Statement st=null;
static ResultSet rs=null;
static String bd="ORCL";
static String login="XXXX";
static String password="XXX";
static String url="jdbc:oracle:thin:@localhost:1521:ORCL";
public static Connection Enlace(Connection conn)throws SQLException {
try {
Class.forName("oracle.jdbc.OracleDriver");
conn=DriverManager.getConnection(url, login, password);
}
catch(ClassNotFoundException e )
{
System.out.print("Clase no encontrada");
}
return conn;
}
public static Statement sta(Statement st)throws SQLException {
conn=Enlace(conn);
st=conn.createStatement();
return st;
}
public static ResultSet EnlEst(ResultSet rs)throws SQLException {
st=sta(st);
rs=st.executeQuery("select * from employees");
return rs;
}
}
我尝试插入记录的方法:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int id = 0;
double salario = 0;
int jefe = 0;
int depto = 0;
String nombre = "", apellidos = "", correo = "", telefono = "", puesto = "";
id = Integer.parseInt(jTextIdEmpleado.getText());
apellidos = jTextNom.getText();
apellidos = jTextApe.getText();
correo = jTextMail.getText();
telefono = jTextTel.getText();
puesto = jTextPuesto.getText();
salario = Double.parseDouble(jTextSalario.getText());
jefe = Integer.parseInt(jTextIdJefe.getText());
depto = Integer.parseInt(jTextDep.getText());
try {
// main miconexion = new main();
conn = Conexion.Enlace(conn);
Statement sta = conn.createStatement();
try {
sta.executeQuery("INSERT INTO employees VALUES (307,'Alfredo','Garcia','alfredgad','222222', TO_DATE('07-JUN-1994', 'dd-MON-yyyy'),'AC_ACCOUNT',8300,NULL,205,110)");
} catch (SQLException e) {
System.out.println("error");
sta.close();
}
String sqlinsertar = "insert into employees (employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,commission_pct,manager_id,department_id) values (?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement psta = conn.prepareStatement(sqlinsertar);
psta.setInt(1, id);
psta.setString(2, nombre);
psta.setString(3, apellidos);
psta.setString(4, correo);
psta.setString(5, telefono);
psta.setDate(6, (Date) jDateChooser1.getDate());//Probar por separado
psta.setString(7, puesto);
psta.setDouble(8, salario);
psta.setNull(9, java.sql.Types.INTEGER);
psta.setInt(10, jefe);
psta.setInt(11, depto);
psta.executeUpdate();
psta.close();
JOptionPane.showMessageDialog(null, "Registro Guardado Satisfactoriamente");
} catch (Exception e) {
System.out.println(e.getCause());
}
}
但是当我执行它时,它不起作用,控制台只说“null”。我认为问题要么是日期,要么是null,但我已经尝试了一周,还没有解决。
我希望有人能告诉我问题出在哪里。
提前感谢
关于
下一个错误java.lang.ClassCastException:java.util.日期无法转换为java.sql.日期
看起来JFileChooser返回了一个java。util。日期,您需要的是java。sql。Date,一个继承自java的类。util。日期,SQL数据库将其用作日期类型。我没有看到任何复制构造函数,但也许可以使用从java转换为长参数的构造函数。util。日期到java。sql。日期
那么,如果你改变这一点:
psta.setDate(6, (Date) jDateChooser1.getDate());//Probar por separado
对此:
java.util.Date utilDate = (java.util.Date) jDateChooser1.getDate();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
psta.setDate(6, sqlDate);
错误: SQL错误[1843][22008]:ORA-01843:不是有效的月份值(6,'RR','SS','2019-06-19'),错误Msg=ORA-01843:不是有效的月份ORA-01843:不是有效的月份
我正在尝试使用Java jdbc连接在mysql数据库中插入一行。。。。 这是我的密码, } 当我尝试运行代码时,我得到类强制转换异常。。。非常感谢您的帮助。这是我的学生。java类 } 当我运行代码时,我得到以下错误:线程“main”java中出现异常。lang.ClassCastException:类java。util。日期不能转换为java类。sql。jdbcsample中的日期(java.
如果在批处理过程中发生错误,Oracle JDBC驱动程序将引发BatchUpdateException。使用NamedParameterJdbcDaoSupport插入数据,如下所示 由于唯一密钥约束,我遇到BatchUpdateException,我们正在处理数百万条记录,因此我们无法进入数据库检查唯一密钥。 如果一条记录失败,那么批插入不会失败。
我已经了解了INSERT ALL语法,只要我不想检索插入的id值,它就可以正常工作。 与INSERT ALL语法相反,我可以在事务中使用多个INSERT INTO语句,这将起作用,但不利于性能,如下所述:在Oracle中进行多行插入的最佳方法?。 这是我当前的代码: 它适用于单行,但如果我尝试插入所有语法,我会得到一个: Java . SQL . sqlsyntaxerrorexception:O
如本文所示,此功能在MySQL中可用,根据Sybase文档,它也应该得到支持,但是Sybase没有提供工作示例,因此您必须解释以下内容: 语法1使用指定的表达式列值插入单行或多行。如果指定,多行由附加括号分隔 因此,我将“附加括号”解释为期望下面的代码能够工作 然而,它错误地 我使用的是Sybase ASE 15,在INSERT语句的支持页面上看不到任何关于插入多行的引用 这个功能在赛贝斯可用吗?
问题内容: 我想在表中添加可变数量的记录(天) 我已经看到了一个很好的解决方案: 但是可悲的是,这在UDF中不起作用(因为#temp和SET ROWCOUNT)。知道如何实现吗? 目前,我正在使用WHILE和表变量来完成此操作,但是就性能而言,这并不是一个好的解决方案。 问题答案: 这是我正在使用的方法,并且对于我的目的和使用SQL 2000来说效果最佳。因为就我而言,它位于UDF中,所以我不能使