1.抽象类为什么不能创建对象?
抽象类和接口都能创建对象,只是后边的new不能是new他们自己,但可以new他们的实现类(必须是类,不能是抽象类和接口),
人们使用抽象类和接口只是为了说明要干什么事,而让他们的实现类去根据自己的需要去实现这些方法,比如说抽象类定义一个eat()方法,
它并没有说这个方法具体怎么做,羊就可以吃草,虎就可以吃肉,羊和虎都实现了这个吃的方法。
一个类继承抽象类。用抽象类的子类实例化抽象类的引用。例如
A是抽象类 B extends A ,并且B实现了A中所有的抽象方法,就可以A a = new B();
2.SQL查询语句关键字的执行顺序。
执行顺序是;
from —> on —> outer(join) —> where —> group by
—> cube|rollup —> having —> select —> distinct —> order by —> top
3.Statement和prepareStatement的区别。
语法区别:
1.statement的语法;
Statement stmt = connect.createStatement();
String sql= "SELECT * FROM cg_user WHERE userId=10086 AND name LIKE 'xiaoming'";
ResultSet rs = stmt.executeUpdate(sql);
2.preparestatement的语法;
PreparedStatement preparedStatement = connect.prepareStatement("SELECT * FROM cg_user WHERE userId= ? AND name LIKE ?");
preparedStatement .setInt(1, 10086 );
preparedStatement .setString(2, "xiaoming");
preparedStatement .executeUpdate();
访问数据库的速度:
Statement不会初始化,没有预处理,没次都是从0开始执行SQL,
prepareStatement会先初始化SQL,先把这个SQL提交到数据库中进行预处理,多次使用可提高效率。
preparestatement能批量执行
好处:Update大量的数据时, 先构建一个INSERT语句再多次的执行, 会导致很多次的网络连接.。要减少JDBC的调用次数改善性能, 可以使用PreparedStatement的AddBatch()方法一次性发送多个查询给数据库。
JDBC驱动的最佳化是基于使用的是什么功能. 选择PreparedStatement还是Statement取决于你要怎么使用它们. 对于只执行一次的SQL语句选择Statement是最好的. 相反, 如果SQL语