• JDBC


    相比于Statement,PreparedStatement可以动态改变sql语句的参数,所以应用更灵活。代码和上一篇的差不多,不过这里我特意感受了一下MyEclipse的调试功能,感觉还行。

       improt ……;
    public class Test2 {

    //连接本地数据库的两种写法
       // private static final String URL="jdbc:sqlserver://localhost:1433;DatabaseName=TestDB";
       // private static final String URL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=TestDB";
        private static final String URL="jdbc:sqlserver://222.26.*.*:1433;DatabaseName=TestDB";
                                              //连接异地数据库,这里用的是寝室另一台电脑的IP
        private static final String USERNAME="sa";
        private static final String PASSWORD="1234";
        static{
         try {
       Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载JDBC驱动程序
    } catch (ClassNotFoundException e) {
       System.out.println("发生如下异常:");
        e.printStackTrace();
    }
        }

    public static void main(String[] args) {
           try {
       Connection conn=DriverManager.getConnection(URL, USERNAME,PASSWORD);//建立数据库连接
       PreparedStatement ps=null;
       //insert多条记录*********************************************************************
       Object[][] items={{"Roney2","Tomsy2","1998-02-06",12},{"Kaka","yyu","1998-02-06",12}}; 
       String sql="insert into cchild values(?,?,?,?)";
       ps=conn.prepareStatement(sql);
       ps.clearBatch();
       for(int i=0;i<items.length;i++)
       {
        ps.setString(1, ""+items[i][0]);//从1开始
                 ps.setString(2, items[i][1].toString()); 
                 ps.setString(3, ""+items[i][2]);
                 ps.setInt(4, Integer.parseInt(""+items[i][3]));
                 ps.addBatch();
       }
       ps.executeBatch();


       //insert 1个记录*********************************************************************
          ps.clearBatch();//最好先清理一下Batch
          ps.setString(1, "test");
          ps.setString(2, "testson");
          ps.setString(3, "1985-06-04");
          ps.setInt(4, 25);
          ps.execute();//也可以ps.executeUpdate();

            
       //修改一条记录*********************************************************************
       String sql2="update cchild set age=? where birthday=?";
       ps=conn.prepareStatement(sql2);
       ps.setInt(1, 14);
       ps.setString(2, "1998-02-06");
       ps.executeUpdate();
       //修改多条记录*********************************************************************
       Object[][] itemss={{1,"Sun"},{2,"Li"}};
       String sql3="update cchild set age=age+? where cusername=?";
       ps=conn.prepareStatement(sql3);
       ps.clearBatch();
       for(int i=0;i<itemss.length;i++)
       {
          ps.setInt(1, Integer.parseInt(""+itemss[i][0])); 
          ps.setString(2, ""+itemss[i][1]);
          ps.addBatch();
       }
       ps.executeBatch();
       
       
       //删除记录*********************************************************************
       String sql4="delete from cchild where cusername=?";
       ps=conn.prepareStatement(sql4);
       ps.setString(1, "Kaka");
       ps.executeUpdate();
       
       
       //查询记录*********************************************************************
       String sql5="select * from cchild where cusername=?";
       ps=conn.prepareStatement(sql5);
       ps.setString(1, "Zhang");
       ResultSet rs=ps.executeQuery();//注意这里有错

       ResultSetMetaData rsmd=rs.getMetaData();//这里能够得到 返回数据表的详细信息 ,列标号也是从1开始
       System.out.println(rsmd.getColumnName(1)+" "+rsmd.getColumnName(2)+" "+
                    rsmd.getColumnName(3)+" "+rsmd.getColumnName(4));//得到各列的列名
       while (rs.next()) {
        String cusername=rs.getString(1);//从1开始的
        String childname=rs.getString(2);
        String birthdaty=rs.getString(3);
        int age=rs.getInt(4);
        System.out.println(cusername+" "+childname+" "+birthdaty+" "+age);
       }
       
       ps.close();//关闭statement
       conn.close();//关闭数据库连接
       System.out.println("success***********");
    } catch (SQLException e) {
       System.out.println("产生异常");
         e.printStackTrace();


    }
    }
        
    调试过程:将光标移到想设置断点的某一行,快捷键Ctrl+Shift+B,或者工具栏Run->Toggle BreakPoint,这样就可以为某一行加上断点了,这里我在每一个操作之间都加上了断点。然后再左侧的

    Package Explorer中找到那个Test2.java文件,右键Debug As->Java Application, 然后MyEclipse会自动切换到Debug视图,程序会在遇到的第一个断点处停住,此时可以点击上面Resume按钮(快捷键

    F8)程序会继续执行到下一个断点处,或者此时按Step Over按钮(快捷键F6),单步执行,不会进入某一个具体函数。如果此时按Step Into( 快捷键F5)则是会进入某一个函数。

    按照上面的调试过程,最后这个程序一切正常,哈哈……

  • 相关阅读:
    MariaDB的安装与启动
    Win10系统提示对于目标文件系统过大
    kvm中重命名虚拟机
    libvirt启动报错Failed to start Virtualization daemon
    常用的一些开源小工具 之 日期时间类
    常用的一些开源小工具 之 StringUtils
    zookeeper之 watch机制(三)
    shiro权限框架使用详解
    zookeeper节点之 java操作 和zookeeper-权限(ACL),设置超级用户(二)
    时间处理Date,最好改成 LocalDateTime ,时间计算,格式化时间,增加减少时间
  • 原文地址:https://www.cnblogs.com/mamo/p/3584437.html
Copyright © 2020-2023  润新知