JDBC使用preparedStatement问题 2C

使用preparedStatement进行增删改操作出现错误,可以进行查询,而使用Statement是可以进行增删改查操作,用错误内容百度说是权限问题,而jdbc登陆的用户是具有所有权限的,小白求解!!
提示错误信息代码:

@Test
public void preparedStatement() {
    String sql = "INSERT  INTO test.student(name,age) values (?,?);";
    Connection c = null;
    java.sql.PreparedStatement pre = null;
    try {
         c = getConnection();
         pre.setString(1, "张琳");
        pre.setInt(2, 18);
         pre = c.prepareStatement(sql);

        pre.executeQuery();

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
    close(c,pre,null);  
    }

}

图片说明
图片说明
图片说明

10个回答

public static void main(String[] args) throws Exception {
  // TODO Auto-generated method stub
     Class.forName("oracle.jdbc.driver.OracleDriver");//引用Oracle数据库连接驱动包
     Connection con =DriverMa......
答案就在这里:jdbc preparedstatement 使用
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

你这截图,代码真看不清

qq_34485818
Lin_Rock 不好意思,我今天回去了再发试试 现在是手机
接近 4 年之前 回复
qq_34485818
Lin_Rock 我也不晓得怎么传上去变模糊了
接近 4 年之前 回复
@Test
public void preparedStatement() {
    String sql = "INSERT  INTO test.student(name,age) values (?,?);";
    //String sql =  "select * from test.student;";
    Connection c = null;
    java.sql.PreparedStatement pre = null;
    try {
         c = getConnection();

         pre = c.prepareStatement(sql);
        pre.setString(1, "张亚林");
        pre.setInt(2, 18);
        //ResultSet ResultSet=

        pre.executeUpdate();

// while( ResultSet.next()){

// int id = ResultSet.getInt(1);

// String name = ResultSet.getString(2);

// int age = ResultSet.getInt(3);

// System.out.print(id);

// System.out.print(name);

// System.out.print(age);

// System.out.println();

// }
} catch (Exception e) {

        // TODO Auto-generated catch block
        ![![图片说明](https://img-ask.csdn.net/upload/201607/14/1468507826_332573.png)图片说明](https://img-ask.csdn.net/upload/201607/14/1468507769_830304.png)
        e.printStackTrace();

    }finally{

    close(c,pre,null);  

    }

![图片说明](https://img-ask.csdn.net/upload/201607/14/1468507916_48254.png)图片说明

图片说明

图片说明

这是发生错误的代码:

@Test
public void preparedStatement() {
    String sql = "INSERT  INTO test.student(name,age) values (?,?);";
    Connection c = null;
    java.sql.PreparedStatement pre = null;
    try {
         c = getConnection();

         pre = c.prepareStatement(sql);

        pre.executeQuery();

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
    close(c,pre,null);  
    }

}

换个数据库驱动包试一试

错误排除:
1、保证sql没错,在图形工具运行正确再放入编码。
2、保证数据库可以操作,而不是只读。

YKWNDY
一只臭狮子 汗,不知道你是如何做到的(程序与 运行结果都不一致难道跑错方法了??哈)。。。。找不到办法只能出必杀了:重装mysql(可能某些配置有问题),并且使用兼容jar。。。
接近 4 年之前 回复
qq_34485818
Lin_Rock 用preparedStatement查询操作,程序运行不报错,但结果依旧是插入第一次的记录
接近 4 年之前 回复
qq_34485818
Lin_Rock 回复callme森: 换了jar包,第一次进行插入操作成功,但是第二次再次进行插入新的记录却依然是原来的记录,更恐怖的是 我不·进行插入操作而进行查询,可结果是程序运行成功但结果依然是插入操作,插入的记录是第一次插入的记录,用ResultSet可以进行查询,不用preparedStatement进行插入换成Statement结果还是程序可运行,但插入的是第一次的记录
接近 4 年之前 回复
YKWNDY
一只臭狮子 回复qq_34485818: 解决了记得公布一下答案哈
接近 4 年之前 回复
YKWNDY
一只臭狮子 回复qq_34485818: 换过jar包么,还有可能数据库版本与jdbc版本不兼容。
接近 4 年之前 回复
qq_34485818
Lin_Rock sql语句用图形工具是可以进行任意操作的,而jdbc登陆的为root用户,不存在权限问题
接近 4 年之前 回复

没有注册驱动?,。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐