ResultSet(结果集)、Statement

article/2025/10/1 6:12:17

ResultSet

基本介绍:

1.表示数据库结果集的数据表,通常通过执行查询数据库的语句生成

2.ResultSet对象保持一个光标指向其当前的数据行,光标最初在第一行之前

3.next()方法是将光标移动到下一行,并且由于在ResultSet对象中没有更多时返回false,可以在while循环中使用循环来遍历结果集

package com.jh.resultSet_;

//演示select语句返回ResultSet,并取出结果

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

public class ResultSet_ {
    public static void main(String[] args) throws ClassNotFoundException, SQLException, IOException {

        //通过properties对象获得配置文件信息
        Properties properties = new Properties();
        properties.load(new FileInputStream("src\\mysql.properties"));
        //获取相关信息
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String url = properties.getProperty("url");
        String driver = properties.getProperty("driver");

        //1.注册驱动
        Class<?> class01 = Class.forName(driver);
        //2.得到连接
        Connection connection = DriverManager.getConnection(url, user, password);
        //3.得到Statement
        Statement statement = connection.createStatement();

        //4.组织SQL语句
        String sql = "select id,name,borndate,phone,sex from jh_db02";

        //5.执行给定的SQL语句,该语句返回单个 ResultSet对象
        ResultSet resultSet = statement.executeQuery(sql);

        //6.使用while取出数据
        while (resultSet.next()){//光标向后移动,如果没有更多行,返回false
            int id = resultSet.getInt(1);//获取该行的第1列
            String name = resultSet.getString(2);//获取该行的第2列
            Date borndate = resultSet.getDate(3);
            String phone = resultSet.getString(4);
            String sex = resultSet.getString(5);
            System.out.println(id + "\t" + name + "\t" + borndate + "\t" + phone + "\t" + sex);
 
        }

        //7.关闭连接
        resultSet.close();
        statement.close();
        connection.close();

    }
}

 Statement

基本介绍:

1.Statement对象,用于执行静态SQL语句并返回其生成的结果的对象

2.在连接建立之后,需要对数据库进行访问,执行,命名或是SQL语句,可以通过

        Statement[存在SQL注入]

        PreparedStatement[预处理]

        CallableStatement[存储过程]

3.Statement对象执行SQL语句,存在SQL注入风险

4.SQL注入是利用某些系统没有对用户输入的数据进行充分的检查,而在用户输入数据中注入非法的SQL语句段或命令,恶意攻击数据库

5.为防止SQL注入,可以使用PreparedStatement

package chapter01;

//演示statement的注入问题

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
import java.util.Scanner;

public class Statement_ {
    public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {

        Scanner scanner = new Scanner(System.in);

        //让用户输入管理员名和密码
        System.out.println("请输入管理员的名字:");
        String adminName = scanner.nextLine();//nextLine,next():当接收到空格或'表示结束
        System.out.println("请输入管理员的密码:");
        String adminPosswd = scanner.nextLine();

        //通过Properties对象获取配置文件的信息
        Properties properties = new Properties();
        properties.load(new FileInputStream("src\\mysql.properties"));
        //获取相关的值
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String driver = properties.getProperty("driver");
        String url = properties.getProperty("url");
        //注册驱动
        Class<?> class01 = Class.forName(driver);
        //得到连接
        Connection connection = DriverManager.getConnection(url, user, password);
        //得到statement
        Statement statement = connection.createStatement();
        //组织SQL
        String sql = "select name,posswd from jh_db02 " +
                "       where name = '"+ adminName +"'and posswd = '" + adminPosswd + "'";
        //查询
        ResultSet resultSet = statement.executeQuery(sql);
        if (resultSet.next()){//如果查询到一条记录,则说明存在
            System.out.println("登陆成功...");
        }else {
            System.out.println("登陆失败...");
        }

        //关闭连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}

 

 

 


http://chatgpt.dhexx.cn/article/ihXHRPZ3.shtml

相关文章

【JDBC】------ResultSet(结果集)和常见异常

分享第二十条励志语句 宁可自信&#xff0c;也不要盲目悲观。因为自信是一种力量&#xff0c;即使你的自信有些盲目&#xff0c;也无关大局&#xff0c;你可以在实践中调整心态&#xff0c;找到自己的恰当的位置。如果盲目自卑&#xff0c;你就必然失去一切。 目录 分享第二十…

JDBC的ResultSet

一、ResultSet[结果集] 1.表示数据库结果集的数据表&#xff0c;通常通过执行查询数据库的语句生成。 2.ResultSet对象保持一个光标指向其当前的数据行&#xff0c;最开始光标在第一行。 3.next方法将光标移动到下一行&#xff0c;由于在ResultSet对象中没有更多行时返回fal…

Java中,ResultSet 的用法

•在Java中&#xff0c;获得ResultSet的总行数的方法有以下几种。 第一种&#xff1a;利用ResultSet的getRow方法来获得ResultSet的总行数 Java代码 Statement stmt con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet r…

ResultSet结果集的使用

一、ResultSet结果集的简介 查询数据库时&#xff0c;返回的是一个二维的结果集&#xff0c;我们需要用到ResultSet来遍历结果集&#xff0c;获取每一行的数据。 二、使用ResultSet遍历查询结果 boolean next() 将光标从当前位置向前移一行。 String  getString(int column…

ResultSet用法集锦

ResultSet用法集锦 添加链接描述 结果集(ResultSet)是数据中查询结果返回的一种对象&#xff0c;可以说结果集是一个存储查询结果的对象&#xff0c;但是结果集并不仅仅具有存储的功能&#xff0c;他同时还具有操纵数据的功能&#xff0c;可能完成对数据的更新等.结果集读取数据…

ResultSet的介绍与使用

相关文章 jdbc连接以及出现的异常处理Jdbc工具类ResultSet的介绍与使用jdbc中的sql注入PreparedStatement的介绍与解决sql注入jdbc管理事务 ResultSet ResultSet是我们使用jdbc连接时&#xff0c;查询的一个返回结果集,ResultSet resultSet stmt.executeQuery(sql),下面就使用…

JDBC之ResultSet接口

ResultSet介绍 对数据库的查询操作&#xff0c;一般需要返回查询结果。在程序中&#xff0c;JDBC为我们提供了ResultSet接口来专门处理查询结果集。 由于ResultSet是JDBC的一个接口&#xff0c;先来简单了解一下JDBC&#xff1a; JDBC&#xff1a;Java Database Connection&am…

android studio BindService

一.输入&#xff1a; 1.全部代码&#xff1a; 主界面代码&#xff1a; public class BindServiceActivity extends AppCompatActivity implements View.OnClickListener {private static final String TAG "BindServiceActivity";private Button mBtBindService;…

Service中bindService

最近有用到Activity需要不断的从Service中获取数据&#xff0c;第一个想法肯定就是通过bind回调机制了&#xff0c;有几点概念模糊特此记录下&#xff1a; 单独使用bindService()&#xff0c;unbindService()会经历&#xff1a;->onCreate()->onBind()->Service runn…

bindService不调用onServiceConnected的问题

bindService不调用onServiceConnected的问题 昨天做一个项目时&#xff0c;Activity需要bindService获取到service实例与service进行交互&#xff0c;创建好service如下&#xff08;例&#xff09;&#xff1a; class MyService{private IBinder mBinder new MyServicerBind…

bind服务

一、域名 www.baidu.com www.baidu.com. &#xff08;.&#xff09;根域 &#xff08;com&#xff09;一级域名 &#xff08;baidu&#xff09;二级域名 二、DNS解析记录分类 A记录、CNAME、MX记录、NS记录 1、A记录 通过域名直接查询到IP 例如&…

bindService启动流程

通过bindService启动的Service,会执行Service的onCreate、onBind、onUnbind、onDestroy方法&#xff0c;可以通过onBind方法返回的Binder对象和调用端进行通信&#xff0c;并且Service的生命周期和调用端同步。 如下是启动bindService的代码 var stu: Student? null val con…

AIDL报错,bindService一直连接不上、不起作用。

先说问题&#xff0c;最近用aidl&#xff0c;发现bindService根本就不走&#xff0c;不知道咋回事&#xff0c;明明写的没有任何毛病啊&#xff1f; //aidl绑定private void bind() {Intent intent new Intent();String pkg "com.example.mzz_service";//需要调用…

服务两种启动方式(startService与bindService)的区别

综上两篇文章 1.Android Service的基本用法&#xff08;startService启动方式生命周期&#xff09; 2.Android Service与Activity之间的通信&#xff08;bindService启动方式&#xff09; 区别如下&#xff1a; 一.生命周期上的区别 startService启动服务&#xff1a;Service会…

进程间通讯:Binder:bindService之 onServiceConnected回调

1&#xff1a;bindService官方概述 很明显 通过Google官方文档描述&#xff0c;我们知道 1&#xff1a;bindService&#xff08;&#xff09;的返回值只是表明服务是否存在&#xff1b; 2&#xff1a;真正能代表是否成功绑定服务的是触发onServiceConnected&#xff08;&…

Android入门第41天-Android中的Service(bindService)

介绍 在前一天我们介绍了Android中有两种启动Service的方法。并擅述了startService和bindService的区别。同时我们着重讲了startService。 因此今天我们就来讲bindService。bindService大家可以认为它是和Android的一个共生体。即这个service所属的activity如果消亡那么bindS…

Android Binder框架实现之bindService详解

Android Binder框架实现之bindService详解 Android Binder框架实现目录&#xff1a; Android Binder框架实现之Binder的设计思想 Android Binder框架实现之何为匿名/实名Binder Android Binder框架实现之Binder中的数据结构 Android Binder框架实现之Binder相关的接口和类 Andr…

Android bindService流程

一. 前言 我们可以通过startService来启动一个服务, 当然也可以通过bindService绑定一个服务,本篇文章我们来讲一讲绑定服务的完整流程, 阅读此文之前,建议先阅读一下笔者的这三篇文章 Android 进程间通信机制(三) 系统进程与应用进程通信 Android 进程间通信机制(四) 应用进程…

bind服务程序

一、介绍 1、bind服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务程序。 2、为了有效地限制bind服务程序仅能对自身的配置文件进行操作&#xff0c;以确保整个服务器的安全&#xff0c;在安装部署bind服务程序时加上chroot&#xff08;俗称牢笼机制&#xff09;…

startService bindService 区别

Android执行Service有两种方法&#xff0c;一种是startService&#xff0c;一种是bindService。下面让我们一起来聊一聊这两种执行Service方法的区别。 1、生命周期上的区别 执行startService时&#xff0c;Service会经历onCreate->onStartCommand。当执行stopService时&…