java statement是什么(什么是Statement)
各位老铁们好,相信很多人对java statement是什么都不是特别的了解,因此呢,今天就来为大家分享下关于java statement是什么以及什么是Statement的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
JSP中stmt=conn.createStatement()是什么意思
那是连接数据库时,要获取一个可以执行sql语句的对象。(偷懒,直接笔记了~)
连接数据库步骤:
a.用java程序与db建立一个连接(通道)
b。根据连接获取一个执行sql语句的对象
c。执行sql语句
d。关闭连接
public class Main{
public static void main(String[] args){
try{
//1加载驱动类
//forName()返回与带有给定字符串名的类或接口相关联的 Class对象
Class.forName("org.gjt.mm.mysql.Driver");
//a.建立连接通道
//DriverManager管理一组 JDBC驱动程序的基本服务。java.sql
//getConnection()返回:到 URL的连接
String url="jdbc:mysql://127.0.0.1:3306/a11";
String user="root";
String password="root";
Connection conn=DriverManager.getConnection(url, user,password);
//b。获取一个执行sql语句的对象
//Statement用于执行静态 SQL语句并返回它所生成结果的对象。
//createStatement()创建一个 Statement对象来将 SQL语句发送到数据库。
Statement st;
st=conn.createStatement();
//c.执行sql语句
//执行给定 SQL语句,该语句可能为 INSERT、UPDATE或 DELETE语句,或不返回内容
st.executeUpdate("insert into student(stuname,stuage,stusex,stubirth) values('张三',10,'m','1988-08-09')");
//d.关闭连接
//立即释放此 Connection对象的数据库和 JDBC资源,而不是等待它们被自动释放
conn.close();
} catch(ClassNotFoundException e){
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("加载驱动类失败!");
} catch(SQLException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//或者关闭写在finally
Java getStatement()是什么意思
通过你们的问答,我想这应该是你们自己封装的jdbc数据库访问类。这个类的名称为DBUtils.里面有一个静态方法getStatement,这个方法的参数为一个数据库边接,返回一个用于执行SQL语句Statement类。
java使用jdbc访问数据库的一般就几行代码就可以,以oracle为例:
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl为数据库的SID
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);//得到数据库连接
Statement stmt= conn.createStatement();
stmt.executeUpdate("INSERT INTO MyTable( name) VALUES('my name')");
什么是Statement
在默认情况下,同一时间每个 Statement对象在只能打开一个 ResultSet对象。因此,如果读取一个 ResultSet对象与读取另一个交叉,则这两个对象必须是由不同的 Statement对象生成的。如果存在某个语句的打开的当前 ResultSet对象,则 Statement接口中的所有执行方法都会隐式关闭它。 Statement对象用于将 SQL语句发送到数据库中。实际上有三种 Statement对象,它们都作为在给定连接上执行 SQL语句的包容器:Statement、PreparedStatement(它从 Statement继承而来)和 CallableStatement(它从 PreparedStatement继承而来)。它们都专用于发送特定类型的 SQL语句: Statement对象用于执行不带参数的简单 SQL语句;PreparedStatement对象用于执行带或不带 IN参数的预编译 SQL语句;CallableStatement对象用于执行对数据库已存储过程的调用。 Statement接口提供了执行语句和获取结果的基本方法。PreparedStatement接口添加了处理 IN参数的方法;而 CallableStatement添加了处理 OUT参数的方法。有些DBMS将已存储过程中的每条语句视为独立的语句;而另外一些则将整个过程视为一个复合语句。在启用自动提交时,这种差别就变得非常重要,因为它影响什么时候调用 commit方法。在前一种情况中,每条语句单独提交;在后一种情况中,所有语句同时提交。字段摘要 static int CLOSE_ALL_RESULTS该常量指示调用 getMoreResults时应该关闭以前一直打开的所有 ResultSet对象。 static int CLOSE_CURRENT_RESULT该常量指示调用 getMoreResults时应该关闭当前 ResultSet对象。 static int EXECUTE_FAILED该常量指示在执行批量语句时发生错误。 static int KEEP_CURRENT_RESULT该常量指示调用 getMoreResults时不会关闭当前 ResultSet对象。 static int NO_GENERATED_KEYS该常量指示生成的键应该不可用于获取。 static int RETURN_GENERATED_KEYS该常量指示生成的键应该可用于获取。 static int SUCCESS_NO_INFO该常量指示批量语句执行成功但不存在受影响的可用行数计数。方法摘要 void addBatch(String sql)将给定的 SQL命令添加到此 Statement对象的当前命令列表中。 void cancel()如果DBMS和驱动程序都支持中止 SQL语句,则取消此 Statement对象。 void clearBatch()清空此 Statement对象的当前 SQL命令列表。 void clearWarnings()清除在此 Statement对象上报告的所有警告。 void close()立即释放此 Statement对象的数据库和 JDBC资源,而不是等待该对象自动关闭时发生此操作。 boolean execute(String sql)执行给定的 SQL语句,该语句可能返回多个结果。 boolean execute(String sql, int autoGeneratedKeys)执行给定的 SQL语句(该语句可能返回多个结果),并通知驱动程序所有自动生成的键都应该可用于获取。 boolean execute(String sql, int[] columnIndexes)执行给定的 SQL语句(该语句可能返回多个结果),并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。 boolean execute(String sql, String[] columnNames)执行给定的 SQL语句(该语句可能返回多个结果),并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。 int[] executeBatch()将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。 ResultSet executeQuery(String sql)执行给定的 SQL语句,该语句返回单个 ResultSet对象。 int executeUpdate(String sql)执行给定 SQL语句,该语句可能为 INSERT、UPDATE或 DELETE语句,或者不返回任何内容的 SQL语句(如 SQL DDL语句)。 int executeUpdate(String sql, int autoGeneratedKeys)执行给定的 SQL语句,并用给定标志通知驱动程序由此 Statement生成的自动生成键是否可用于获取。 int executeUpdate(String sql, int[] columnIndexes)执行给定的 SQL语句,并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。 int executeUpdate(String sql, String[] columnNames)执行给定的 SQL语句,并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。 Connection getConnection()获取生成此 Statement对象的 Connection对象。 int getFetchDirection()获取从数据库表获取行的方向,该方向是根据此 Statement对象生成的结果集合的默认值。 int getFetchSize()获取结果集合的行数,该数是根据此 Statement对象生成的 ResultSet对象的默认获取大小。 ResultSet getGeneratedKeys()获取由于执行此 Statement对象而创建的所有自动生成的键。 int getMaxFieldSize()获取可以为此 Statement对象所生成 ResultSet对象中的字符和二进制列值返回的最大字节数。 int getMaxRows()获取由此 Statement对象生成的 ResultSet对象可以包含的最大行数。 boolean getMoreResults()移动到此Statement对象的下一个结果,如果其为 ResultSet对象,则返回 true,并隐式关闭利用方法 getResultSet获取的所有当前 ResultSet对象。 boolean getMoreResults(int current)将此Statement对象移动到下一个结果,根据给定标志指定的指令处理所有当前 ResultSet对象;如果下一个结果为 ResultSet对象,则返回 true。 int getQueryTimeout()获取驱动程序等待 Statement对象执行的秒数。 ResultSet getResultSet()以ResultSet对象的形式获取当前结果。 int getResultSetConcurrency()获取此 Statement对象生成的 ResultSet对象的结果集合并发性。 int getResultSetHoldability()获取此 Statement对象生成的 ResultSet对象的结果集合可保存性。 int getResultSetType()获取此 Statement对象生成的 ResultSet对象的结果集合类型。 int getUpdateCount()以更新计数的形式获取当前结果;如果结果为 ResultSet对象或没有更多结果,则返回-1。 SQLWarning getWarnings()获取此 Statement对象上的调用报告的第一个警告。 boolean isClosed()获取是否已关闭了此 Statement对象。 boolean isPoolable()返回指示 Statement是否是可池化的值。 void setCursorName(String name)将SQL指针名称设置为给定的 String,后续 Statement对象的 execute方法将使用此字符串。 void setEscapeProcessing(boolean enable)将转义处理设置为开或关。 void setFetchDirection(int direction)向驱动程序提供关于方向的提示,在使用此 Statement对象创建的 ResultSet对象中将按该方向处理行。 void setFetchSize(int rows)为JDBC驱动程序提供一个提示,它提示此 Statement生成的 ResultSet对象需要更多行时应该从数据库获取的行数。 void setMaxFieldSize(int max)设置此 Statement对象生成的 ResultSet对象中字符和二进制列值可以返回的最大字节数限制。 void setMaxRows(int max)将此Statement对象生成的所有 ResultSet对象可以包含的最大行数限制设置为给定数。 void setPoolable(boolean poolable)请求将 Statement池化或非池化。 void setQueryTimeout(int seconds)将驱动程序等待 Statement对象执行的秒数设置为给定秒数。 Statement使用案例 1、创建 Statement对象建立了到特定数据库的连接之后,就可用该连接发送 SQL语句。Statement对象用 Connection的方法 createStatement创建,如下列代码段中所示: Connection con= DriverManager.getConnection(url,"sunny",""); Statement stmt= con.createStatement();为了执行 Statement对象,被发送到数据库的 SQL语句将被作为参数提供给 Statement的方法: ResultSet rs= stmt.executeQuery("SELECT a, b, c FROM Table2"); 2、使用 Statement对象执行语句 Statement接口提供了三种执行 SQL语句的方法:executeQuery、executeUpdate和 execute。使用哪一个方法由 SQL语句所产生的内容决定。方法executeQuery用于产生单个结果集的语句,例如 SELECT语句。方法executeUpdate用于执行 INSERT、UPDATE或 DELETE语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE和 DROP TABLE。INSERT、UPDATE或 DELETE语句的效果是修改表中零行或多行中的一列或多列。executeUpdate的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE或 DROP TABLE等不操作行的语句,executeUpdate的返回值总为零。方法execute用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能,所以本概述后面将在单独一节中对其进行介绍。执行语句的所有方法都将关闭所调用的 Statement对象的当前打开结果集(如果存在)。这意味着在重新执行 Statement对象之前,需要完成对当前 ResultSet对象的处理。应注意,继承了 Statement接口中所有方法的 PreparedStatement接口都有自己的 executeQuery、executeUpdate和 execute方法。Statement对象本身不包含 SQL语句,因而必须给 Statement.execute方法提供 SQL语句作为参数。PreparedStatement对象并不将 SQL语句作为参数提供给这些方法,因为它们已经包含预编译 SQL语句。CallableStatement对象继承这些方法的 PreparedStatement形式。对于这些方法的 PreparedStatement或 CallableStatement版本,使用查询参数将抛出 SQLException。 3、语句完成当连接处于自动提交模式时,其中所执行的语句在完成时将自动提交或还原。语句在已执行且所有结果返回时,即认为已完成。对于返回一个结果集的 executeQuery方法,在检索完 ResultSet对象的所有行时该语句完成。对于方法 executeUpdate,当它执行时语句即完成。但在少数调用方法 execute的情况中,在检索所有结果集或它生成的更新计数之后语句才完成。 4、关闭 Statement对象 Statement对象将由 Java垃圾收集程序自动关闭。而作为一种好的编程风格,应在不需要 Statement对象时显式地关闭它们。
关于java statement是什么,什么是Statement的介绍到此结束,希望对大家有所帮助。