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();
}
}
}
}
}