㈠ java里的(关于PreparedStatement接口)预编译
当你向数据库提交SQL语句后,数据库要对这条语句进行编译,例如语法分析、优化路径选择、分配资源等一系列操作,这是需要时间的。
当你向数据库插入10条记录时,如果使用常规做法,数据库需要编译10次。
而使用PreparedStatement接口,数据库只需要编译一次,其他只是更改参数就可以了。
所以,当你向数据库中进行批量操作的时候,预编译效率比较高。
㈡ 在java中如何实现预编译
/*
* ProCompile.java *预处理要编译的文件,删除多余的空白,注释,换行,回车等
* Created on 2007年9月18日, 下午8:58 */ package javacompile; import java.io.*;
import java.util.regex.*;
import javax.swing.JOptionPane; /** * @com.junjian.sun public class PerCompile { File f = null;
String fileString = null;
Pattern p = null;
Matcher m = null;
String regex; //正则表达式 //初始化p
public PerCompile() {
regex ="(//.+)" + //(//.+) 对应单行注释
//"|(/\\*(.+\\n)+\\*/)"+ // 想对应多行注释... "|(\\r\\n)" + "|(\\n)"+//(\\r\\n)|(\\n)对应换行
"|(\\B\\s+)" ; // 空白符
String ss;
f = new File(new JOptionPane()
.showInputDialog("请输入文件所在路径~"));
try {
BufferedReader bf = new BufferedReader(new FileReader(f));
ss = bf.readLine()+"\n";
fileString = ss; //如果没有这两句,ss的开头会有“null”
while((ss = bf.readLine())!= null){
fileString += ss+"\n"; bf.close();
} catch (IOException ex) {
ex.printStackTrace(); p = Pattern.compile(regex);
m = p.matcher(fileString); //执行替换所有多余空行,空白符,注释
void Dels(){
System.out.println("before: "+fileString);
if(m.find()) System.out.println("find!!");
System.out.println(m.replaceAll("")); } }
-
㈢ java jdbc中事务可以预编译传参数吗
1)加载数据库驱动
通常我们使用Class类的forName()静态方法来加载驱动(由各个数据库厂商自己实现)
Class.forName("com.mysql.jdbc.Driver");
Class.forName("oracle.jdbc.driver.OracleDriver");
"com.mysql.jdbc.Driver"、"oracle.jdbc.driver.OracleDriver"代表了数据库驱动类对应的字符串
2)通过DriverManager获取数据库连接
DriverManager.getConnection(Stringurl,Stringuser,Stringpass);
2.1)url:数据库连接字符串
2.1.1)Mysql
jdbc:mysql://hostname:port/databasename
2.1.2)Oracle
jdbc:oracle:thin:@hostname:port:databasename
2.2)user:数据库的系统用户名
2.3)pass:数据库的系统密码
3)通过Connection对象创建Statement对象,Connection创建Statement对象的方法有如下3个
3.1)createStatement(Stringsql):创建基本的Statement对象
3.2)prepareStatement(Stringsql):根据传入的SQL语句创建预编译的Statement对象
3.3)prepareCall(Stringsql):根据传入的SQL语句创建CallableStatement对象
4)使用Statement执行SQL语句
所有的Statement都有如下3个方法来执行SQL语句
4.1)execute():可以执行任何SQL语句,但比较麻烦
4.2)executeUpdate():主要用于执行DML和DDL语句。执行DML语句返回受SQL影响的行数,执行DDL语句返回0
4.3)executeQuery():只能执行查询语句,执行后返回代表查询结果的ResultSet对象
5)操作结果集
如果执行的SQL语句是查询语句,则执行结果将返回一个ResultSet对象,该对象里保存了SQL语句查询的结果。程序可以通过操作该ResultSet对象来取出查询结果。ResultSet对象主要提供了如
下方法
5.1)移动记录指针的方法
5.1.1)next()
5.1.2)previous()
5.1.3)first()
5.1.4)last()
5.1.5)beforeFirst()
5.1.6)afterLast()
5.1.7)absolute()
5.2)获取指针指向的某行的"特定的列值"
5.2.1)getInt()
5.2.2)getString()
...
该方法既可以使用列索引作为参数,也可以使用列名作为参数
6)回收数据库资源
包括关闭ResultSet、Statement、Connection等资源
㈣ java预编译的问题,其中sql语句执行不了,其他插入什么的都正常,望指点~
pstmt.setString(1,user.getId()+"");
pstmt.setString(2,user.getName());
pstmt.setString(3,user.getPwd());
这是以占位符方式设置 sql的参数值。
你的sql语句String sql = "select id,name,pwd from userinfo where id=10007";
没有用到,所以这几句删了就行了。或者改为:
String sql = "select id,name,pwd from userinfo where id=?";
pstmt.setString(1,user.getId()+"");
㈤ 关于java 的prepareStatement预编译问题,以下两种形式为什么前者可以后者不可以呢
LIMIT关键字后面要接2个数字,语法是limit <offset>, <step>,所以你要通过preparedstatement设置limit的后面的参数,首先SQL语句就要改成LIMIT ?,? 然后用setInt去绑定。 按照你的程序,应该是:
pre.setInt(3, 0);
pre.setInt(4, 2);
㈥ Java怎么根据三个入参查询数据
第一个参数返回实例u,传递你要返回的U类型对象的初始化实例u。
第二个参数累加器accumulator,可以使用二元_表达式(即二元lambda表达式)声明你在u上累加你的数据来源t的逻辑。
第三个参数组合器combiner,同样是二元_表达式,(u,t)->u。
㈦ java里面的prepareStatement中的“预编译”的概念的理解
开始执行的时候放入内存··
还有一个好处就是 防止sql注入··
预编译的sql语句比普通的sql语句要安全很多··
㈧ JAVA带预编译的模糊查询问题
PreparedStatement sta = Getconn.GetConnection().
prepareStatement("select admin_name,name from admin_hy where name like ?");
sta.setString(1, "%张%");
㈨ java中什么是预编译precompile
预编译的作用就是把所以的代码都运行一遍,等你程序运行到模块A,这个时候需要到B模块,就可以直接调用,效果是启动慢,运行快;所以也称JAVA为静态语言,动态语言如JavaScript,特性就是当程序运行到C的时候需要调用D模块,这个时候才会编译D模块。希望对你有帮助,谢谢
㈩ java连接access数据库是否支持预编译
PreparedStatement与Statement