鱼C论坛

 找回密码
 立即注册
查看: 2722|回复: 0

[学习笔记] java 笔记

[复制链接]
发表于 2017-8-31 23:57:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 可爱的静静 于 2017-9-1 00:05 编辑

java操作数据库的几个步骤:
1、注册驱动:
        Class.forName("驱动程序类名加上包名");
2、建立与数据库的连接,获得Connection对象,其格式:
        Connection 对象名=DriverManager.getConnection("url","用户名","密码")
        连接SQL Server的url格式:
                jdbc:sqlserver://连接的服务器地址:端口号;databasename=数据库名

3、创建命令对象Statement,其格式:
        Statement 对象名=Connection对象.createStatement();
4、执行SQL语句,其格式:
        插入、删除、更新:
                statement对象.executeUpdate(sql语句)   返回int类型表示受影响的行数
5、关闭资源
        statement对象.close();
        Connection对象.close();

在10.34.61.101的电脑上,SQLServer2008中创建StuMng数据库,建立users表,其字段
        id int自动增长
        name varchar(50)
        email varchar(50)
        birthday date

        用户名:sa,密码:123456

利用Java程序向该数据库表增加记录
        '张三'  '123@123.com'  '1997-12-2'

  1. import java.sql.*;

  2. public class Test {
  3.         public static void main(String[] args) {
  4.                
  5.                 try {
  6.                         //1、注册驱动
  7.                         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  8.                 } catch (ClassNotFoundException e) {
  9.                         // TODO Auto-generated catch block
  10.                         e.printStackTrace();
  11.                 }
  12.                
  13.                 try {
  14.                         //2、建立与数据库的连接
  15.                         Connection conn = DriverManager.getConnection("jdbc:sqlserver://10.34.61.101:1433;" +
  16.                                         "databasename=StuMng","sa","123456");
  17.                         //3、创建Statement对象
  18.                         Statement stmt = conn.createStatement();
  19.                         //4、执行sql语句
  20.                         //插入
  21.                         //String sql = "insert into users(name,email,birthday) values('张三','123@123.com','1997-9-1')";
  22.                         //更新
  23.                         //String sql = "update users set name='软件123',email='ls@123.com' where id=1";
  24.                         //删除
  25.                         String sql = "delete from users where id<5";
  26.                         int i = stmt.executeUpdate(sql);
  27.                         //System.out.println("插入了" + i + "行");
  28.                         //System.out.println("更新了" + i + "行");
  29.                         System.out.println("删除了" + i + "行");
  30.                         //关闭资源
  31.                         stmt.close();
  32.                         conn.close();
  33.                 } catch (SQLException e) {
  34.                         // TODO Auto-generated catch block
  35.                         e.printStackTrace();
  36.                 }
  37.         }
  38. }
复制代码


Java对数据库实现查询:
1、注册驱动:
        Class.forName("驱动程序类名加上包名");
2、建立与数据库的连接,获得Connection对象,其格式:
        Connection 对象名=DriverManager.getConnection("url","用户名","密码")
        连接SQL Server的url格式:
                jdbc:sqlserver://连接的服务器地址:端口号;databasename=数据库名

3、创建命令对象Statement,其格式:
        Statement 对象名=Connection对象.createStatement();
4、执行查询的sql语句,其格式:
        ResultSet 对象名 = Statement对象.executeQuery(sql语句)

        ResultSet用于保存JDBC执行查询时返回的结果集,这个结果集封装在一个逻辑表格中

        在ResultSet内部有一个指向表格数据行的指针,ResultSet初始化时,这个指针指向表格
                的第一行的前面位置
        常用方法:
                1)、boolean next():用于将指针指向下一行,如果下一行有数据,返回true,否则返回false
                        while(ResultSet对象.next())  //遍历所有的行
                        {

                        }
                2)、xxx getXxx(String 字段名) ;获得某行对应的某个字段的值
                        xxx表示在数据库该字段的数据类型
                                int i = ResultSet对象.getInt("id")
                                这里的i获得字段id的值,因为字段id为int类型,所以这里用getInt方法,并且返回int

                                String n = ResulstSet对象.getString("name")

                3)、xxx getXxx(int index):获得某行第index个字段的值
                        int i = ResultSet对象.getInt(1)  //获得某行第1个字段的值
                        String n = ResultSet对象.getString(2)

                4)、close():关闭结果集
5、关闭资源,先创建后关闭
        ResultSet对象.close();
        Statement对象.close();
        Connection对象.close();

  1. import java.sql.*;

  2. public class Test {
  3.         public static void main(String[] args) {
  4.                
  5.                 try {
  6.                         //1、注册驱动
  7.                         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  8.                 } catch (ClassNotFoundException e) {
  9.                         // TODO Auto-generated catch block
  10.                         e.printStackTrace();
  11.                 }
  12.                
  13.                 try {
  14.                         //2、建立与数据库的连接
  15.                         Connection conn = DriverManager.getConnection("jdbc:sqlserver://10.34.61.101:1433;" +
  16.                                         "databasename=StuMng","sa","123456");
  17.                         //3、创建Statement对象
  18.                         Statement stmt = conn.createStatement();
  19.                        
  20.                         //4、执行查询
  21.                         String sql = "select * from users";
  22.                         //执行查询后,返回结果集对象
  23.                         ResultSet rs = stmt.executeQuery(sql);
  24.                         //对结果集进行操作,获得所有行对应的字段值
  25.                         while(rs.next())
  26.                         {
  27.                                 //获得指针所指向行对应的字段值
  28.                                 int i = rs.getInt("id");//获得该行字段名为id的字段值
  29.                                 String n = rs.getString(2); //获得该行第2个字段的值
  30.                                 String e = rs.getString("email");
  31.                                 String b = rs.getString(4);
  32.                                 //输出
  33.                                 System.out.println(i + " | " + n + " | " + e + " | " + b);
  34.                         }
  35.                        
  36.                         //5、关闭资源,先创建后关闭
  37.                         rs.close();
  38.                         stmt.close();
  39.                         conn.close();
  40.                        
  41.                 } catch (SQLException e) {
  42.                         // TODO Auto-generated catch block
  43.                         e.printStackTrace();
  44.                 }
  45.         }
  46. }

复制代码

通过Statement执行Sql语句时,每次执行SQL语句,都会对其进行编译,当相同的SQL语句执行多次,
        Statement对象就会对数据库频繁编译相同的SQL语句,会降低数据库的访问效率
为了解决此问题,Statement提供了一个子类PreparedStatement,这个类可以对SQL语句进行
        预编译,当相同的SQL语句再次执行时,就不需要对sql语句再次编译,从而提高效率


利用PreparedStatement操作数据库的步骤:
1、注册驱动:
        Class.forName("驱动程序类名加上包名");
2、建立与数据库的连接,获得Connection对象,其格式:
        Connection 对象名=DriverManager.getConnection("url","用户名","密码")
        连接SQL Server的url格式:
                jdbc:sqlserver://连接的服务器地址:端口号;databasename=数据库名

3、创建命令对象PreparedStatement,其格式:
        PreparedStatement 对象名=Connection对象.prepareStatement(sql语句);

        这里的SQl语句中的字段值可以用?代替,成为占位符
        String sql = "insert into users(name,email,birthday) values(?,?,'1997-9-1')";

        这时还需要对sql语句中占位符赋值
                PreparedStatement对象.setXxx(int index,Xxx 值)  表示对第index个占位符赋值
                                Xxx表示对应的?值的数据类型
               
                PreparedStatement对象.setString(1,"张三");
                PreparedStatement对象.setString(2,"123@123.com")

4、执行SQL语句,其格式:
        插入、删除、更新:
                PreparedStatement对象.executeUpdate()   返回int类型表示受影响的行数
        查询
                ResultSet 对象名=PreparedStatement对象.executeQuery()
5、关闭资源
        ResultSet对象.close();
        Preparedstatement对象.close();
        Connection对象.close();

  1. import java.sql.*;

  2. public class Test {
  3.         public static void main(String[] args) {
  4.                
  5.                 try {
  6.                         //1、注册驱动
  7.                         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  8.                 } catch (ClassNotFoundException e) {
  9.                         // TODO Auto-generated catch block
  10.                         e.printStackTrace();
  11.                 }
  12.                
  13.                 try {
  14.                         //2、建立与数据库的连接
  15.                         Connection conn = DriverManager.getConnection("jdbc:sqlserver://10.34.61.101:1433;" +
  16.                                         "databasename=StuMng","sa","123456");
  17.                        
  18.                         //3、创建PreparedStatement对象
  19.                         String sql = "insert into users(name,email,birthday) values(?,?,'1997-9-1')";
  20.                         PreparedStatement pst = conn.prepareStatement(sql);
  21.                         //对占位符赋值
  22.                         pst.setString(1,"张三");
  23.                         pst.setString(2,"123@123.com");
  24.                         //4、执行SQL语句
  25.                         int i = pst.executeUpdate();
  26.                         System.out.println("插入了" + i + "行");
  27.                        
  28.                         pst.close();
  29.                         conn.close();
  30.                        
  31.                 } catch (SQLException e) {
  32.                         // TODO Auto-generated catch block
  33.                         e.printStackTrace();
  34.                 }
  35.         }
  36. }
复制代码


4、执行sql语句
        插入、删除、修改,其格式:
                statement对象.executeUpdate(sql语句)  返回受影响的行数int
        查询:
                statement对象.executeQuery(sql语句)  返回ResultSet对象结果集
                        while(ResultSet对象.next())
                        {
                                ResultSet对象.getXxx()获得某行某字段的值
                        }
5、关闭资源,先创建后关闭
        ResultSet对象.close();
        Statement对象.close();
        Connection对象.close();


  1. import java.sql.*;
  2. import java.util.*;

  3. public class Test {

  4.         public static void main(String[] args) {
  5.                 //创建Scanner对象,用于输入
  6.                 Scanner scn = new Scanner(System.in);
  7.                 int choice = -1;
  8.                 do
  9.                 {
  10.                         System.out.println("请输入你的选择");
  11.                         System.out.println("1:增加单词;2:查询单词;3:修改单词;4:删除单词;5:退出");
  12.                         try
  13.                         {
  14.                                 //接受用户的输入
  15.                                 choice = Integer.parseInt(scn.nextLine());
  16.                         }catch(Exception ex)
  17.                         {
  18.                                 System.out.println("请输入数字");
  19.                                 continue;
  20.                         }
  21.                         switch(choice)
  22.                         {
  23.                         case 1:
  24.                                 addWord(scn);//自定义方法,增加单词
  25.                                 break;
  26.                         case 2:
  27.                                 query(scn); //查询
  28.                                 break;
  29.                         case 3:
  30.                         case 4:
  31.                         }
  32.                        
  33.                 }while(choice!=5);
  34.         }
  35.         private static void query(Scanner scn)
  36.         {
  37.                 System.out.println("请输入要查询的词");
  38.                 String word = scn.nextLine();
  39.                 //查询的sql语句
  40.                 String sql = "select * from dict where chinese='" + word + "' or english='" + word + "'";
  41.                 Connection conn = getConnection();  //获得连接,调用自定义方法
  42.                
  43.                 try {
  44.                         //创建Statement对象
  45.                         Statement stmt = conn.createStatement();
  46.                         //执行查询,返回ResultSet对象
  47.                         ResultSet rs = stmt.executeQuery(sql);
  48.                         //遍历结果集
  49.                         while(rs.next())
  50.                         {
  51.                                 String cha = rs.getString(2);
  52.                                 String en = rs.getString(3);
  53.                                 System.out.println(cha + "---" + en);
  54.                         }
  55.                         //关闭资源
  56.                         rs.close();
  57.                         stmt.close();
  58.                         conn.close();
  59.                        
  60.                 } catch (SQLException e) {
  61.                         // TODO Auto-generated catch block
  62.                         e.printStackTrace();
  63.                 }
  64.         }
  65.         //自定义方法,用于获得与数据库的连接
  66.         private static Connection getConnection()
  67.         {
  68.                 try {
  69.                         //注册驱动
  70.                         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  71.                 } catch (ClassNotFoundException e) {
  72.                         // TODO Auto-generated catch block
  73.                         e.printStackTrace();
  74.                 }
  75.                 Connection conn = null;
  76.                
  77.                 //获得连接对象
  78.                 try {
  79.                         conn = DriverManager.getConnection("jdbc:sqlserver://10.34.61.101:1433;databasename=dictionary","sa","123456");
  80.                 } catch (SQLException e) {
  81.                         // TODO Auto-generated catch block
  82.                         e.printStackTrace();
  83.                 }
  84.                
  85.                 return conn;
  86.         }
  87.         //自定义方法,用于增加单词
  88.         private static void addWord(Scanner scn)
  89.         {
  90.                 System.out.println("请输入中文");
  91.                 String chinese = scn.nextLine();
  92.                 System.out.println("请输入对应的英文");
  93.                 String english = scn.nextLine();
  94.                 //建立与数据库的连接,调用自定义方法
  95.                 Connection conn = getConnection();
  96.                
  97.                 try {
  98.                         //创建Statement对象
  99.                         Statement stmt = conn.createStatement();
  100.                         //sql语句
  101.                         String sql = "insert into dict(chinese,english) values('" + chinese + "','" + english + "')";
  102.                         //insert into dict(chinese,english) values('软件','english')
  103.                         //执行sql语句
  104.                         int i = stmt.executeUpdate(sql);
  105.                         if(i>0)
  106.                         {
  107.                                 System.out.println("单词增加成功");
  108.                         }
  109.                         else
  110.                         {
  111.                                 System.out.println("单词增加失败");
  112.                         }
  113.                         //关闭资源
  114.                         stmt.close();
  115.                         conn.close();
  116.                 } catch (SQLException e) {
  117.                         // TODO Auto-generated catch block
  118.                         e.printStackTrace();
  119.                 }
  120.                
  121.         }
  122. }
复制代码

评分

参与人数 1鱼币 +5 收起 理由
小甲鱼 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 21:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表