删除行Ctrl D
通过过数据库传出的sql类型不需要转为util类型。因为sql类型是Java。util.date类型的一个子集
java Date
查询一个女神是通过先实例化女神的空对象,再用该女神在数据库中的属性去填充空女神的属性得到一个和数据库中的记录女神一样的女神对象,最后返回这个饱满的女神。
java.sql.Date 是 java.util.Date 的子集,因此从 java.sql.Date 到 java.util.Date 不需要进行类型转换
ptmt.execute();//executeecute()是用于更改数据库的操作,包括新增、修改和删除
executeQuery()用于查询操作
通过数据库传出的是java.sql.Date类型,Java中的是java.util.Date。Java中形参传进的是java.util.Date,
需要将java.sql.Date类型转换成java.util.Date类型
当从数据库的java.sql.Date类型传回来时候,则不需要转,因为java.sql.Date类型是java.util.Date的一个子集
新增、修改女神的时候,传进来的是java.util.Date类型,需要转换java.sql.Date类型,但是往回转的时候,通过数据库传递出来java.sql.Date类型再转回到java.util.Date类型就不需要了
因为java.sql.Date是java.util.Date子集
数据库插入的时候 需要将java.utils.Date --->java.sql.Date
因为sql.Date是utils.Date的子集
(而数据库中的 java.sql.Date--->java.utils.Date 则不需要强转)
使用JDBC连接数据库需要四步,第一步加载驱动程序;第二步,连接数据库;第三步,访问数据库;第四步,执行查询;其中在第四步执行查询时,要用statement类的executeQuery()方法来下达select指令以查询数据库,executeQuery()方法会把数据库响应的查询结果存放在ResultSet类对象中供我们使用。即语句:String
sql="select * from"+tableName; ResultSet rs=s.executeQuery(sql);
新增、修改女神的时候,传进来的是java.util.Date类型,需要转换java.sql.Date类型,但是往回转的时候,通过数据库传递出来java.sql.Date类型再转回到java.util.Date类型就不需要了
因为java.sql.Date是java.util.Date子集
数据库插入的时候 需要将java.utils.Date --->java.sql.Date
因为sql.Date是utils.Date的子集
(而数据库中的 java.sql.Date--->java.utils.Date 则不需要强转)
util date 和 sq date 互转
删除行:ctrl + d
execute操作执行更改数据库的操作,executequery执行查询操作并返回结果集;PreparedStatement预处理sql语句,并最后一起执行。
java.util.Date 需要转化为java.sql.Date类型
java.sql.Date不需要转化为java.util.Date 类型
新增、修改女神的时候,传进来的是java.util.Date类型,需要转换java.sql.Date类型,但是往回转的时候,通过数据库传递出来java.sql.Date类型再转回到java.util.Date类型就不需要了
因为java.sql.Date是java.util.Date子集
数据库插入的时候 需要将java.utils.Date --->java.sql.Date
因为sql.Date是utils.Date的子集
(而数据库中的 java.sql.Date--->java.utils.Date 则不需要强转)
ptmt.setDate(4,new Date(g.getBirthday().getTime()));//util类型需要转化为 sql类型
g.setBirthday(rs.getDate("birthday"));//sql类型不需要转化为util类型
execute()方法用来执行更改数据库的操作,包括新增、修改、删除;
查询操作用的是executeQuery()方法
selete * from imooc_goddess???
select * from imooc_goddess
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 '(set user_name='小夏',sex=1,age=21,birthday='2018-07-06',email='xiaoxia@imooc.' at line 1
待解决
新增、修改女神的时候,传进来的是java.util.Date类型,需要转换java.sql.Date类型,但是往回转的时候,通过数据库传递出来java.sql.Date类型再转回到java.util.Date类型就不需要了
因为java.sql.Date是java.util.Date子集
快速删除行快捷键Ctrl+D
private static final String url="jdbc:mysql://localhost:3306/imooc?characterEncoding=utf-8" ;//静态变量,URL地址
private static final String user = "root"; //静态变量,数据库用户名
private static final String password="123456"; //静态变量,数据库密码
private static Connection conn = null ;//静态变量 ,数据库连接对象
不加?characterEncoding=utf-8在navicat中会出现中文乱码问题
@JDBC---execute方法比较
boolean execute(String sql)
执行给定的 SQL 语句,如果SQL语句返回结果,该方法返回true,否则返回false。
ResultSet executeQuery(String sql)
执行给定的 SQL 语句,该方法返回 查询所获得的结果集ResultSet 对象
int executeUpdate(String sql)
执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或DELETE语句,返回更新所影响的行数。
查询操作用ptmt.execute()
增删改操作用ptm.executeQuery()
java.sql.Date是java.util.Date的子集
preparedStatement和Statement 有什么不一样: 一.代码的可读性和可维护性. 二.PreparedStatement尽最大可能提高性能.因为预编译语句有可能被重复调用.所以语句在被DB的编译器编译后 的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语 句执行代码中(相当于一个函数)就会得到执行. 三.最重要的一点是极大地提高了安全性.
boolean execute(String sql) 执行给定的 SQL 语句,如果SQL语句返回结果,该方法返回true,否则返回false。 ResultSet executeQuery(String sql) 执行给定的 SQL 语句,该方法返回 查询所获得的结果集ResultSet 对象 int executeUpdate(String sql) 执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或DELETE语句,返回更新所影响的行数。 头2种一般在查询中使用 最后一个在插入、更新、删除时使用
注意:
1、sql关键字与字段名之间要有间隔。
2、在新增时,传进来的是java.util类型的日期类型,要转换成java.sql类型, 在查询时从数据库中传出的java.sql类型的日期就不用转换了。因为sql类型的日期是util类型日期的子集