java连oracle,可以连入,但插入数据无法成功
package Ceshi;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Ceshi {
private static Statement dbstate;
private Connection conn;
public Ceshi ()
{
dbstate=null;
conn = null;
}
public Connection Conn1()
{
Connection conn = null;
try {
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID
String user="system";
String password="orcl123";
conn= DriverManager.getConnection(url,user,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public boolean dbInsert(String name,String type,String data,String time,String intro1,String intro2)
{
/**
** 对数据库表进行插入操作
* * @param hm
* * @return bool值,成功返回true,失败返回false
* */
String CNAMEstr=name;
String CTYPEstr=type;
String CDATAstr=data;
String CTIMEstr=time;
String USER_INTRO1str=intro1;
String USER_INTRO2str=intro2;
Conn1();
String sql = "";
boolean insertResult = false;
sql += "insert into CHAT values" + "(" + "chat_seq.nextval"+",'"+ CNAMEstr+"','"+CTYPEstr+"','"+CDATAstr+"','"+CTIMEstr+"','"+USER_INTRO1str+"','"+USER_INTRO2str+"')";
try
{
dbstate.executeUpdate(sql);
System.out.println("Sql1 = " + sql);
insertResult = true;
System.out.println("Sql2 = " + sql);
}
catch(Exception e)
{
System.out.println("Sql3= " + sql);
}
if (insertResult)
return true;
else
return false;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Ceshi obj=new Ceshi();
Connection con=obj.Conn1();
if(con==null)
System.out.print("连接失败");
else
System.out.print("连接成功");
boolean in = obj.dbInsert("服务器","123","123","123",null,null); //—>>>插入
if (in)
System.out.println("insert OK" );
else
System.out.println("insert error! ");
}
}
执行结果:
Sql3= insert into CHAT (CID,CNAME,CTYPE,CDATA,CTIME,USER_INTRO1,USER_INTRO2) values(chat_seq.nextval,'服务器','1001','uuu','2012-10-23 09:20:29:0187','null','null')
insert error!
一直无法插入成功!
求原因?
[最优解释]
private static Statement dbstate;
public Ceshi ()
{
dbstate=null;
conn = null;
}
dbstate.executeUpdate(sql);
如果你没漏掉代码,那你从头到尾都用一个null来执行SQL。
dbstate = con.createStatement();
[其他解释]
把异常打印出来啊,看看具体什么错误。
CTIME字段是timestamp类型?如果是CTIME字段的错误,
'2012-10-23 09:20:29:0187'
改成
to_timestamp('2012-10-23 09:20:29:0187','yyyy-mm-dd hh24:mi:ss:ff')
[其他解释]
把异常打出来看看,看看具体的异常就好分析了。估计是数据类型的问题
[其他解释]
你看看你有插入权限没有?
[其他解释]
断点测试是下面这点出问题了,但是不知道是怎么错了。
dbstate.executeUpdate(sql);
我把生成的sql语句放进oracle里面直接执行却可以插入成功。
[其他解释]
try
{
dbstate.executeUpdate(sql);
System.out.println("Sql1 = " + sql);
insertResult = true;
System.out.println("Sql2 = " + sql);
}
catch(Exception e)
{
System.out.println("Sql3= " + sql);
}
catch到的异常即e为null。。。
这是怎么回事啊?
[其他解释]
数据库所有的字段除了ID外,全是string类型的,并且我都已经将sql语句方巾oracle测试过了,可以插入的,只是在程序这里就一直是插入失败。。。。
求解?
[其他解释]
dbstate.executeUpdate(sql);
是这个错了吧 执行到这抛的异常 都没有打印 sql1 和sql2
[其他解释]
pa
我的代码:
package Ceshi;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Ceshi {
private static Statement dbstate;
private Connection conn;
public Ceshi ()
{
dbstate=null;
conn = null;
}
public Connection Conn1()
{
Connection conn = null;
try {
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID
String user="system";
String password="orcl123";
conn= DriverManager.getConnection(url,user,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public boolean dbInsert(String name,String type,String data,String time,String intro1,String intro2)
{
/**
** 对数据库表进行插入操作
* * @param hm
* * @return bool值,成功返回true,失败返回false
* */
String CNAMEstr=name;
String CTYPEstr=type;
String CDATAstr=data;
String CTIMEstr=time;
String USER_INTRO1str=intro1;
String USER_INTRO2str=intro2;
Conn1();
String sql = "";
boolean insertResult = false;
sql += "insert into CHAT values" + "(" + "chat_seq.nextval"+",'"+ CNAMEstr+"','"+CTYPEstr+"','"+CDATAstr+"','"+CTIMEstr+"','"+USER_INTRO1str+"','"+USER_INTRO2str+"')";
try
{
dbstate = conn.createStatement();
dbstate.executeUpdate(sql);
System.out.println("Sql1 = " + sql);
insertResult = true;
System.out.println("Sql2 = " + sql);
}
catch(Exception e)
{
System.out.println("Sql3= " + sql);
}
if (insertResult)
return true;
else
return false;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Ceshi obj=new Ceshi();
Connection con=obj.Conn1();
if(con==null)
System.out.print("连接失败");
else
System.out.print("连接成功");
boolean in = obj.dbInsert("服务器","123","123","123",null,null); //—>>>插入
if (in)
System.out.println("insert OK" );
else
System.out.println("insert error! ");
}
}
我修改后还是错误啊??
[其他解释]
我知道怎么错了,原来是
public Connection Conn1()
{
Connection conn = null;
try {
这里多了个Connection conn = null;
