求高手!jsp访问oracle数据库的问题, 测试了好多次state.executeUpdate(sql);有问题,其它的都能通过。
privatestaticvoidtest1(){try{Class.forName("oracle.jdbc.driver.OracleDriver");Connect...
private static void test1()
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:oraclexlz","system","manager");
String sql = "select * from Speciality where specialityid=?";
PreparedStatement preSQLSelect = conn.prepareStatement(sql);
preSQLSelect.setInt(1,1);
ResultSet rs = preSQLSelect.executeQuery();
String strName = "ccc";
if(!rs.next())
{
sql="insert into Speciality(specialityid,specialityname)values(Speciality_Seq.Nextval," + strName + ");";
Statement state = conn.createStatement();
state.executeUpdate(sql);
}
}
catch(Exception e)
{
System.out.println("访问数据库有问题!");
}
}
调用该函数时一直显示“访问数据库有问题”,不胜感激!
直接往数据库里面输入数据是可以的 展开
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:oraclexlz","system","manager");
String sql = "select * from Speciality where specialityid=?";
PreparedStatement preSQLSelect = conn.prepareStatement(sql);
preSQLSelect.setInt(1,1);
ResultSet rs = preSQLSelect.executeQuery();
String strName = "ccc";
if(!rs.next())
{
sql="insert into Speciality(specialityid,specialityname)values(Speciality_Seq.Nextval," + strName + ");";
Statement state = conn.createStatement();
state.executeUpdate(sql);
}
}
catch(Exception e)
{
System.out.println("访问数据库有问题!");
}
}
调用该函数时一直显示“访问数据库有问题”,不胜感激!
直接往数据库里面输入数据是可以的 展开
3个回答
展开全部
你调试下,看看具体的异常到底是什么。有了异常信息我们才可以知道到底是sql的问题还是数据库连接的问题。不过根据你的描述,应该是sql的问题。
再一个问题。这个代码应该是直接输出异常信息不要输出数据库有问题。这样不好判断问题。
再一个问题。这个代码应该是直接输出异常信息不要输出数据库有问题。这样不好判断问题。
追问
编译器说 state.executeUpdate(sql); 这行为“ java.sql.SQLException: ORA-00911: 无效字符”
追答
哦。知道了。
sql="insert into Speciality(specialityid,specialityname)values(Speciality_Seq.Nextval," + strName + ");";
是strName的问题。这个字段的数据类型是字符串类型的吧。
字符串类型的要加单引号不是双引号。
正确的写法应该是这样的。
sql="insert into Speciality(specialityid,specialityname)values(Speciality_Seq.Nextval,‘" + strName + "’);";
生成的sql
应该是这样的
insert into Speciality(specialityid,specialityname) values(Speciality_Seq.Nextval,'123');
字符串的有单引号哦。看清楚哦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很明显:
name 为字符,所以需要加单引号:
sql="insert into Speciality(specialityid,specialityname)values(Speciality_Seq.Nextval,'" + strName + "')";
另外,insert into 最后的分号去掉吧(我不确定带着行不行,不过我印象中一般不带)。
name 为字符,所以需要加单引号:
sql="insert into Speciality(specialityid,specialityname)values(Speciality_Seq.Nextval,'" + strName + "')";
另外,insert into 最后的分号去掉吧(我不确定带着行不行,不过我印象中一般不带)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String sql="insert into Speciality(specialityid,specialityname)values(Speciality_Seq.Nextval, '"+strName+"')";
这个是正解,望楼主采纳~~~~~
这个是正解,望楼主采纳~~~~~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询