PreparedStatement接口

PreparedStatement接口是Statement子接口。属于预处理操作。
设置日期格式问题
在PreparedStatement中定义了setDate()方法,此方法可以设置日期内容,在使用此方法时,后边Date类型变量是java.sql.Date,而不是java.util.Date,所以,要将java.util.Date转换成jva.sql.Date类型的内容使用

String birthday = "1999-12-12" ; //使用字符串表示日期
java.util.Date temp = null ;    //声明Date对象
//通过一个SimpleDateFormat类将一个字符串变为java.util.Date类型
temp = new SimpleDateFormat("yy-MM-dd").parse(birthday) ;
//通过java.util.Date取出具体的日期数,并将其转化成java.sql.sql类型
java.sql.Date bir = new java.sql.Date(temp.getTime()) ;

利用接口 实现数据库数据插入操作

import java.sql.* ;
import java.text.SimpleDateFormat ;
import java.text.ParseException ;
public class PreparedStatementDemo01
{   
    //定义数据库驱动程序
    public static final String driver = "org.gjt.mm.mysql.Driver" ;
    //定义数据库连接地址
    public static final String url = "jdbc:mysql://localhost:3306/spiderman" ;
    //定义数据库名称
    public static final String user = "root" ;
    //定义数据库密码
    public static final String pass = "" ;

    public static void main(String[] args)
    {   //加载数据库驱动程序
        try
        {
            Class.forName(driver) ;
        }
        catch(ClassNotFoundException e)//抛出异常
        {
            e.printStackTrace() ;
            return ;
        }

        //加载数据库连接
        Connection conn = null ;
        try
        {
            conn = DriverManager.getConnection(url,user,pass);

        }
        catch(SQLException e)
        {
            e.printStackTrace() ;
            return ;
        }

        //执行数据库操作
        PreparedStatement pst = null ;
        int age = 13;
        String name = "大强" ;
        String sex = "女" ;
        String password = "BeiJing" ;

        String birthday = "1999-10-10" ; //将String类型转为Date类型
        java.util.Date temp = null ;
        try
        {   
            //通过SimpleDateFormat将字符串变为 java.util.Date类型
            temp = new SimpleDateFormat("yy-MM-dd").parse(birthday);    
        }
        catch (ParseException e)
        {
            e.printStackTrace() ;
        }
        //通过java.sql.Date取出具体的日期,将其转为java.util.Date类型
        java.sql.Date birth = new java.sql.Date(temp.getTime()) ;   

        String sql =  "Insert Into mytable(name,password,age,sex,birthday)values(?,?,?,?,?); "; 
        try
        {

            pst = conn.prepareStatement(sql) ; //实例化preparedStatement接口对象
            pst.setString(1,name) ;
            pst.setString(2,password) ;
            pst.setInt(3,age) ;
            pst.setString(4,sex) ;
            pst.setDate(5,birth) ;

            pst.executeUpdate() ;
        }
        catch(SQLException e)
        {
            e.printStackTrace();
            return ;
        }

        finally
        {   
            if(pst!=null)
            {
                try
                {
                    pst.close() ;
                }
                catch (SQLException e)
                {
                    e.printStackTrace() ;
                }
            }
            if(conn!=null)
            {
                try
                {
                    conn.close();
                }
                catch(SQLException e)
                {
                    e.printStackTrace();
                }
            }
        }       
    }
}

执行数据库查询操作

import java.sql.* ;
import java.text.SimpleDateFormat ;
import java.text.ParseException ;
public class PreparedStatementDemo02
{   
    //定义数据库驱动程序
    public static final String driver = "org.gjt.mm.mysql.Driver" ;
    //定义数据库连接地址
    public static final String url = "jdbc:mysql://localhost:3306/spiderman" ;
    //定义数据库名称
    public static final String user = "root" ;
    //定义数据库密码
    public static final String pass = "" ;

    public static void main(String[] args)
    {   //加载数据库驱动程序
        try
        {
            Class.forName(driver) ;
        }
        catch(ClassNotFoundException e)//抛出异常
        {
            e.printStackTrace() ;
            return ;
        }

        //加载数据库连接
        Connection conn = null ;
        try
        {
            conn = DriverManager.getConnection(url,user,pass);

        }
        catch(SQLException e)
        {
            e.printStackTrace() ;
            return ;
        }

        //执行数据库操作
        PreparedStatement pst = null ;
        ResultSet rs = null ;       //接收查询到的结果
        String keyword = "o" ;      //定义关键字为"o" ;

        String sql =  "select id,name,age,password,sex,birthday from mytable where name like ? or password like ? or sex like ?"; 
        try
        {

            pst = conn.prepareStatement(sql) ; //实例化preparedStatement接口对象
            pst.setString(1,"%"+keyword+"%") ;
            pst.setString(2,"%"+keyword+"%") ;
            pst.setString(3,"%"+keyword+"%") ;

            rs = pst.executeQuery() ;//执行查询
            while(rs.next())        //打印下一个内容
            {
                int id = rs.getInt(1) ;         //依次取值
                String name = rs.getString(2) ; //依次取值
                int age = rs.getInt(3) ;        
                String password = rs.getString(4) ;
                String sex = rs.getString(5) ;
                java.util.Date d = rs.getDate(6);

                System.out.print("编号:"+id) ;            //依次进行输出
                System.out.print("姓名:"+name) ;
                System.out.print("年龄:"+age) ;
                System.out.print("密码:"+password) ;
                System.out.print("性别:"+sex) ;
                System.out.println("生日:"+d) ;
            }
        }
        catch(SQLException e)
        {
            e.printStackTrace();
            return ;
        }

        finally
        {   
            if(pst!=null)
            {
                try
                {
                    pst.close() ;
                }
                catch (SQLException e)
                {
                    e.printStackTrace() ;
                }
            }
            if(conn!=null)
            {
                try
                {
                    conn.close();
                }
                catch(SQLException e)
                {
                    e.printStackTrace();
                }
            }
        }       
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值