jdbc

来源:互联网 发布:手机淘宝官网首页 编辑:程序博客网 时间:2024/04/30 03:30
    • 连接数据库
      • 配置MySQL数据库的驱动程序
        • 下载 mysql-connector-java-5.1.39.zip,复制到jdk的所在处
          1. public class jdbc {
          2. public static final String DRIVER="org.gjt.mm.mysql.Driver";
          3. public static void main(String[] args){
          4. try{
          5. System.out.println(Class.forName(DRIVER)) ;
          6. }catch(ClassNotFoundException e){
          7. e.printStackTrace() ;
          8. }
          9. }
          10. }          
        • 若能输出Class名,则已配置好了
        • 为什么调用Class.forName(),却没有newInstance(); 
          • Class.forName() 加载了指定类后,若类中有静态初始化器,JVM必然会执行该类的静态代码段,而JDBC的Driver类都是会有static代码块  
      • DriverManager
        • getConnection(String url, String user ,String password) :通过连接地址链接数据库,同时输入用户名和密码
        • url:  jdbc:mysql://  ip地址 : 端口号/ 数据库名称             
          • jdbc协议:JDBC URL中的协议总是jdbc
          • 子协议:驱动程序名或数据库连接机制(这种机制可由一个或多个驱动程序支持)的名称,如mysql
          • 子名称:一种标识数据库的方法,必须遵循”//主机名 : 端口/子协议"  的标准URL命名    约定
        • Connection接口
      • 执行数据库的更新操作
        • Statement接口,通过Connection接口的createStatement()方法实例化,来操作数据库
          1. public static final String DRIVER="org.gjt.mm.mysql.Driver";
          2. public static final String URL="jdbc:mysql://localhost:3306/newsql";
          3. public static final String USERNAME="root";
          4. public static void main(String[] args)throws Exception{
          5. Connection conn=null;
          6. Statement statement=null;
          7. String sql="insert into newtable(name) values('ccw')";
          8. try{
          9. Class.forName(DRIVER); //加载驱动
          10. }catch(ClassNotFoundException e){
          11. e.printStackTrace() ;
          12. }
          13. conn=DriverManager.getConnection(URL,USERNAME,USERNAME);
          14. statement=conn.createStatement();
          15. statement.executeUpdate(sql);
          16. try{
          17. statement.close();     //先开后关闭,可以只关闭connection
          18. conn.close();
          19. }catch(Exception e){
          20. e.printStackTrace();
          21. }
          22. }
  • ResultSet接口
    • 接受所查询的记录,并显示内容,开发中要限制查询数量
    • Statement接口的executeQuery() 方法,返回一个ResultSet对象
      1. ResultSet rSet=statement.executeQuery(sql);
      2. while(rSet.next()){
      3. int id=rSet.getInt("id"); //int id=rSet.getInt(1);
      4. String name=rSet.getString("name"); //String name=rSet.getString(2);
      5. String sex=rSet.getString("sex"); //....
      6. System.out.println(id+name+sex);
      7. }
    • ResultSet的所有数据都可以通过getString()方法获得
  • PreparedStatement接口
    • 是Statement的子接口,属于预处理操作,与直接使用Statement不同的是,是先在数据表中准备好了一条SQL语句,但是此SQL语句的具体内容暂时不设置,而是之后在进行设置,即占住此位置等待用户设置
      1. String sql="insert into newtable(name,sex) values(?,?)";
      2. pStatement=conn.prepareStatement(sql); //实例化
      3. pStatement.setString(1, name);
      4. pStatement.setString(2, sex);
      5. pStatement.executeUpdate();
    • 注意:开发中不建议使用Statement来操作数据库,而是使用PreparedStatement,因为Statement是完整的SQL语句

0 0
原创粉丝点击