Name Null Type
------------------ -------- --------------
RESOURCE_ID NOT NULL NUMBER(38)
RESOURCE_FIRST_NM NOT NULL VARCHAR2(30)
RESOURCE_MIDDLE_NM VARCHAR2(30)
RESOURCE_LAST_NM NOT NULL VARCHAR2(30)
RESOURCE_TYPE_CD NOT NULL VARCHAR2(10)
EMPLOYEE_ID VARCHAR2(20)
EMPLOYEE_TYPE_CD VARCHAR2(10)
FUNCTIONAL_LEAD_CD VARCHAR2(10)
PHONE_1 VARCHAR2(15)
PHONE_2 VARCHAR2(15)
FAX_NR VARCHAR2(15)
EMAIL_DE VARCHAR2(50)
RESOURCE_STATUS_CD NOT NULL VARCHAR2(10)
HIRING_DT NOT NULL DATE
LEAVE_START_DT DATE
LEAVE_END_DT DATE
TERMINATED_DT DATE
ADDRESS1 VARCHAR2(50)
ADDRESS2 VARCHAR2(50)
CITY VARCHAR2(15)
STATE VARCHAR2(15)
int i=statement.executeUpdate("
insert into RAS_T_RESOURCES(
RESOURCE_ID,
RESOURCE_FIRST_NM,
RESOURCE_MIDDLE_NM,
RESOURCE_LAST_NM,
RESOURCE_TYPE_CD,
EMPLOYEE_ID,
FUNCTIONAL_LEAD_CD,
ADDRESS1,
ADDRESS2,
PHONE_1,
PHONE_2,
FAX_NR,
EMAIL_DE,
RESOURCE_STATUS_CD,
HIRING_DT,
LEAVE_START_DT,
LEAVE_END_DT,
TERMINATED_DT,
CITY,
STATE)
values(
2,
'"+strFirstname+"',
'"+strMiddlename+"',
'"+strLastname+"',
'"+strResourceType+"',
'"+strEmpId+"',
'"+strHiringMngr+"',
'"+strAddress1+"',
'"+strAddress2+"',
'"+strPhone1+"',
'"+strPhone2+"',
'"+strFax+"',
'"+strEMail+"',
'"+strstatus+"',
"+strHiringDate+",
"+strStartDate+",
"+strEndDate+",
"+strTerminatedDate+",
'"+strCity+"',
'"+strState+"');");
任何人都可以帮忙吗?有什么问题?
答案 0 :(得分:3)
我的猜测是问题是你没有使用绑定变量,并且你得到了一个与连接字符串相关的错误。例如,如果数据中有逗号,则会导致问题。如果Java字符串恰好与会话的DATE
不匹配,则任何Oracle NLS_DATE_FORMAT
列都会产生问题。
出于性能,可用性和安全性原因,我强烈建议使用绑定变量。
答案 1 :(得分:3)
纯粹作为编译器思考,这样的表达式:
'"+strFirstname+"'
将被解释为文字字符串。 (如果您正在考虑的话,则不会进行变量替换。)
这一点可能是问题所在:
"+strHiringDate+",
"+strStartDate+",
"+strEndDate+",
"+strTerminatedDate+",
这些将被Oracle解析为标识符,而不是字符串 - 因为您省略了单引号('),Oracle标识符可选地用双引号(“)分隔。