精华内容
下载资源
问答
  • JDBC之创建PreparedStatement

    千次阅读 2019-04-14 17:19:57
    JDBC之创建PreparedStatement创建PreparedStatement动态传参PreparedStatement vs Statement通过PreparedStatement执行sql语句 创建PreparedStatement 通过调用 Connection 对象的 preparedStatement() 方法获取 ...

    创建PreparedStatement

    通过调用 Connection 对象的 preparedStatement() 方法获取 PreparedStatement 对象;PreparedStatement 接口是 Statement 的子接口,它表示一条预编译过的 SQL 语句。

    Java代码:

    	String sql = "update user set name=? where id=?";
    	PreparedStatement statement = connection.prepareStatement(sql);
    

    动态传参

    PreparedStatement 对象所代表的 SQL 语句中的参数用问号(?)来表示;调用 PreparedStatement 对象的 setXxx() 方法来设置这些参数;setXxx() 方法有两个参数,第一个参数是要设置的 SQL 语句中的参数的索引(从 1 开始),第二个是设置的 SQL 语句中的参数的值;其中Xxx指的是数据类型。

    	String sql = "update user set name=? where id=?";
    	PreparedStatement statement = connection.prepareStatement(sql);
    	statement.setString(1, "jackma");
    	statement.setLong(2, 1);
    

    PreparedStatement vs Statement

    PreparedStatement可以防止SQL注入攻击;并且PreparedStatement会对SQL语句进行预编译,再次执行相同的语句不需要再次进行编译,可以提高执行效率。

    通过PreparedStatement执行sql语句

    	//获取数据库连接
    	Connection connection = JDBCTools.getConnection();
    	//创建preparedStatement
    	String sql = "update user set name=? where id=?";
    	PreparedStatement statement = connection.prepareStatement(sql);
    	//填充占位符参数
    	statement.setString(1, "jackma");
    	statement.setLong(2, 1);
    	//执行更新语句
    	int affectedRows = statement.executeUpdate();
    
    展开全文
  • JAVA连接SQL_2008,通过JDBC_ODBC连接 可以创建: Statement sm=ct.createStatement(); rs=sm.executeQuery("select * from hero"); ...也可以创建preparedStatement 【注意比较...//3、创建 PreparedStatement

    JAVA连接SQL_2008,通过JDBC_ODBC连接

    可以创建:    Statement

    sm=ct.createStatement();  
    rs=sm.executeQuery("select * from hero");  

    也可以创建:preparedStatement    【注意比较与上面的区别】

    //3、创建 PreparedStatement
    			ps=ct.prepareStatement("select * from hero");
    			rs=ps.executeQuery();
    

    +++++++++++++++++++++++++++

    功能:演示使用JDBC-ODBC桥连的方式连接数据库

    +++++++++++++++++++++++++++

    /**
     * 功能:演示使用JDBC-ODBC桥连的方式连接数据库
     * 1、配置数据源
     * 2、在程序中去连接数据源
     * 3、创建 PreparedStatement
     * 4、执行(CRUD,创建数据库,备份数据库,删除数据库)
     */
    package SQL_ceshi_a;
    import java.sql.*; //引入包
    public class test_sql {
    	public static void main(String[] args) {
    		Connection ct=null;
    		PreparedStatement  ps=null;
    		ResultSet rs=null;
    		try{
    			//1、加载驱动
    			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    			//2、得到连接[指定连接到哪个数据源,用户名和密码]
    			ct=DriverManager.getConnection("jdbc:odbc:mytest","sa","123456");//SQL_用户名
    			
    			//3、创建 PreparedStatement
    			ps=ct.prepareStatement("select * from hero");
    			rs=ps.executeQuery();
    					while(rs.next()){
    						int heroID=rs.getInt(1);
    						String heroName=rs.getString(2);
    						String heroNickName=rs.getString(3);
    						String sex=rs.getString(4);
    						int sal=rs.getInt(5);
    						System.out.println(heroID+" "+heroName+" "+heroNickName+" "+sex+" "+sal+" ");
    					}
    				
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    		finally{
    			//关闭资源!!!!!!
    			//Connection Statement是资源都得予以关闭
    		    //关闭的顺序:谁先创建,谁后关闭
    			try {
    				//为了程序健壮  //最后创建的先被关闭
    				if(rs!=null){
    					rs.close();
    				}
    				if(ps!=null){
    					ps.close();
    				}
    				if(ct!=null){
    					ct.close();
    				}
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}	
    		}
    	}
    }
      




    展开全文
  • 1.根据测试占位符?不能用于表名 ...try(PreparedStatement ps=conn.prepareStatement(strSql)) { ps.setObject(1,"person"); 会提示语法错误 Exception in thread "main" java.lang.RuntimeExcepti...
    1.根据测试占位符?不能用于表名
    String strSql="SELECT * FROM ?";
    try(PreparedStatement ps=conn.prepareStatement(strSql)) {
        ps.setObject(1,"person");

    会提示语法错误

    Exception in thread "main" java.lang.RuntimeException: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''person''

     

    2.占位符?用于其它变量名时,执行正常

    String strSql="SELECT * FROM person WHERE name =?";
    try(PreparedStatement ps=conn.prepareStatement(strSql)) {
        ps.setObject(1,"张三");
        ResultSet rs=ps.executeQuery();

    欢迎指正

    展开全文
  • 示例代码如下所示,虽然可以解决PreparedStatement的SQL语句中带in 条件的问题,但无法享受PreparedStatement的缓存带来的好处 package com.justin.pk4; import java.sql.Connection; import java.sql....

    示例代码如下所示,虽然可以解决PreparedStatement的SQL语句中带in 条件的问题,但无法享受PreparedStatement的缓存带来的好处

    package com.justin.pk4;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Set;
    
    import javax.xml.crypto.Data;
    
    public class DynamicPreparedStatement {
    
    	public static String preparePlaceHolderStr(int length) {
    		StringBuilder builder = new StringBuilder();
    		for (int i = 0; i < length;) {
    			builder.append("?");
    			if (++i < length) {
    				builder.append(",");
    			}
    		}
    		return builder.toString();
    	}
    
    	public static void setValueForPlaceHolder(PreparedStatement preparedStatement, Object... values) throws SQLException {
    		for (int i = 0; i < values.length; i++) {
    			preparedStatement.setObject(i + 1, values[i]);
    		}
    	}
    	
    	public List<Data> find(Set<Long> ids) throws SQLException {
    		String SQL_FIND = "SELECT id, name, sex FROM t_student WHERE id IN (%s)";
    	    Connection connection = null;
    	    PreparedStatement statement = null;
    	    ResultSet resultSet = null;
    	    List<Data> list = new ArrayList<Data>();
    	    String sql = String.format(SQL_FIND, preparePlaceHolderStr(ids.size()));
    	    try{
    	        connection = getConnection();
    	        statement = connection.prepareStatement(sql);
    	        setValueForPlaceHolder(statement, ids.toArray());
    	        resultSet = statement.executeQuery();
    	        while (resultSet.next()) {
    	            //TODO
    	        }
    	    } finally {
    	        //TODO  close connection
    	    }
    	    return list;
    	}
    	
    	private Connection getConnection(){
    		 Connection connection = null;
    		 //TODO
    		 return connection;
    	}
    
    }
    


     

    展开全文
  • PreparedStatement

    2017-05-05 09:27:45
    1创建preparedStatement对象 2.设置每个输入参数的值 3.执行sql语句
  • PreparedStatement笔记

    2019-03-20 10:45:37
    (1)PreparedStatement:是Statement 的子接口,可以传入带占位符的 SQL 语句。...①创建PreparedStatement: String sql = “INSERT INTO examstudent VALUES(?,?,?,?)” PreparedStatement ps = conn.p...
  • JDBC PreparedStatement操作

    2017-07-27 11:21:24
    1 插入数据 public boolean ChaRu3(User user){ boolean flag=true; Connection conn=null; PreparedStatement ps=null; //创建PreparedStatement 对象 String sql= "insert into user
  • Statement与PreparedStatement的关系和区别: 关系:PreparedStatement继承自Statement,都是接口。... 创建Statement是不需要传参的,而创建PreparedStatement是需要传入sql语句作为参数的。(原因:因...
  • 一个JDBC PreparedStatement示例,用于在数据库中创建表。 CREATE TABLE EMPLOYEE ( ID serial, NAME varchar(100) NOT NULL, SALARY numeric(15, 2) NOT NULL, CREATED_DATE timestamp with time zone NOT ...
  • PreparedStatement 预编译

    千次阅读 2015-08-01 14:26:50
    什么是预编译语句?  预编译语句PreparedStatement是java.sql中的一个接口,它是Statement的子接口。通过Statement对象执行sql语句时,需要将sql...而通过PreparedStatement不同,在创建PreparedStatement对象时就指
  • Preparedstatement Statement 和 PreparedStatement 的区别   1. 预编译:SQL 语句被预编译并存储在 PreparedStatement 对象中。...创建 PreparedStatement,预编 sql 语句 String sql = "select *
  • 二、创建PreparedStatement对象三、带参数的SQL语句2.读入数据总结 前言 这里大概整理一下对于PreparedStatement的理解 一、为什么选择PreparedStatement? Statement对象在每次执行SQL语句时都将该语句传给数据库...
  • JDBC中的PreparedStatement

    2020-04-21 16:04:59
    使用Statement需要进行拼写SQL语句,很麻烦而且容易出错,这就用到了PreparedStatement。PreparedStatement是Statement的子接口,可以传入带占位符...1.1 创建PreparedStatement; String sql="INSERT INTO EXAMS...
  • 跟汤老师学Java笔记:PreparedStatement接口 完成:第一遍 1.什么是PreparedStatement接口? PreparedStatement接口继承自Statement接口,推荐使用 2.PreparedStatement接口和Statement...3.创建statement对象和创建pr
  • Java JDBC PreparedStatement示例创建一个SQL IN条件。... 在JDBC中,我们可以使用createArrayOf来创建PreparedStatement IN查询。 @Override public List<Integer> getPostIdByTagId(List<Integ...
  • package sqExe; import java.sql.Connection...import java.sql.PreparedStatement; import java.sql.SQLException; import cn.java.myLib.CommDb; public class ExeDDLP { private static Prepared...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,999
精华内容 28,799
关键字:

创建preparedstatement