就是用conn连接创建一个statement对象,这个对象有executeUpdate方法执行传入的sql语句

解决方案 »

  1.   

    主要是创建statement对象,对数据库进行一些操作...
      

  2.   

    conn.createStatement() 可以理解成conn调用createStatement()方法么?
      

  3.   

    是调用这个方法啊
    然后可以生成一个Statement对象
    然后这个对象可以执行sql语句
    查询用executeQuery,返回一个Resultset结果集
    更新用executeUpdate,返回一个整数,即受影响行数
      

  4.   

    哦。。我是新手,再弱弱的问下,生成对象不是要用new关键字么?
      

  5.   

    生成对象可以用new,但是你可以把new这个过程外面封装一个方法来实现。
      

  6.   

    受教。。多谢,我只是想知道如果用“Statement stmt= new Statement()”这种方式可以么?
      

  7.   

    1、加载数据库驱动(Class.forName(DBDRIVER) ;    // 加载驱动程序)。
    2、建立数据库连接池(conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;)。
    3、由当前数据库连接生成一个数据操作对象(stmt = conn.createStatement() ; )。
    4、用这个数据操作对象进行数据库操作(stmt.executeUpdate(sql) ;        // 执行数据库更新操作)。
    5、关闭数据操作对象(stmt.close() ;)。
    6、关闭数据连接(conn.close() ; )。个人愚见:由于当前数据库操作对象是根据当前数据库连接来生成,每一个连接生成的对象是由当前连接来决定的。使用"NEW"的方式创建的对象跟当前连接没有关系,所以系统不知道该为这个对象使用哪一个数据库连接,造成多用户使用时产生错乱。
      

  8.   

    不可行,Statement只是一个接口,没有具体实现,必须通过conn.createStatement() ;来创建具体对象。
      

  9.   

    是的,必须通过数获得据库连接的对象conn 调用createStatement方法来创建Statement对象
      

  10.   

    明白了,createStatement是connection接口的方法,就是用来创建statement对象用的
      

  11.   

    其实我也是个菜鸟,不过我还是想说几句:
    连mysql ,是一系列的过程,这个过程有诸多对象参与:
    首先要有database的驱动,Class.forName(DBDRIVER) ;这里已经注册驱动了;有了驱动 就可以连接数据库了,这个连接当然与驱动关系密切,其实我们是“问”驱动要连接的conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;连接上数据库后,就要对数据库进行操作。连接这个对象不应该负责操作这一块啊,所谓不在其位不谋其政,但我们要对数据库进行操作,也必须经过连接之后才能将命令下达到数据库。于是我们向连接申请了一个操作对象:stmt = conn.createStatement() ;你的一切操作都经过操作对象传达给 数据库 服务器。这样说吧,大明统治全国,成祖(你)要向广西下道圣旨,首先广西要归附大明(注册了,朝廷就有专门管地方政权的部门 DriverManager ,广西就成为了一个可用的服务器);其次大明要与广西取得联系,有关部门于是修了驿站(connection);当时没无线电这种方便快捷的载体,只能用马(Statement)传递圣旨,这马不是路边的,是驿站的;于是永乐帝(你)就可以下圣旨了
    故先注册驱动,再向驱动索取连接,再向连接取操作,最后给操作一条命令让它执行//statement有陈述的意思。你可以认为它是一个向服务器表达你命令的对象演讲完毕,谢谢。其实我应该放你,没你的提问谁去想这问题啊
      

  12.   

    我也是这样想的,stmt实际上是一个实例化的对象,后面的conn.createStatement();是一个conn对象拥有的方法。因为conn对象含盖了与数据库连接的方法,所以是需要用这个conn对象中的方法来创建stmt对象的。
    流程大致是对象方法(DriverManager.getConnection(DBURL,DBUSER,DBPASS);conn.createStatement();)创建新对象(conn;stmt;),即接口中的覆盖思想,用覆盖的方式实现接口。
    可是发现这样想也有解释不了的地方,要实例化接口不是应该覆盖接口中的所有方法么,并且其中没有implements关键词。
    还有一个地方就是stmt.executeUpdate(sql) ,stmt只是用的conn.createStatement();对象方法来创建,哪来的executeUpdate(***);方法呢?希望有高手指点一下,这样想是对的么?