精华内容
下载资源
问答
  • java 数据库查询数据时,报空指针

    千次阅读 2019-02-23 14:59:59
    今天在做某一功能时,在controller查询数据是否存在,发现总会报出空指针异常,处理结果如下: 将controller所做条件判断,交由实现层去处理,判断不为空,则返回1(数据已存在),并抛出异常;否则返回0(数据不...

    今天在做某一功能时,在controller查询数据是否存在,发现总会报出空指针异常,处理结果如下:

    将controller所做的条件判断,交由实现层去处理,判断不为空,则返回1(数据已存在),并抛出异常;否则返回0(数据不存在),继续做添加操作。

    实现层:

    另外,将Mapper.xml中加入userGeneratedKeys="true"

     

    展开全文
  • 该楼层疑似违规已被系统折叠隐藏...import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;i...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    package sql;

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    import java.util.ArrayList;

    import java.util.List;

    import E50.Userinfo;

    //负责数据库的连接getConn()和关闭close();

    public class Basesql {

    Connection conn = null;

    public Connection getConn() {

    try {

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//

    Connection conn=DriverManager.getConnection("jdbc:odbc:ltj");

    //Statement stat = conn.createStatement();

    if (conn != null) {

    System.out.println("数据库连接成功!");

    } else {

    System.out.println("数据库连接失败!");

    }

    } catch (SQLException se) {

    se.printStackTrace();

    } catch (Exception e) {

    e.printStackTrace();

    }

    return conn;

    }

    public void close(ResultSet rs, Statement st, Connection conn) {

    try {

    if (rs != null) {

    rs.close();

    }

    if (st != null) {

    st.close();

    }

    if (conn != null) {

    conn.close();

    }

    } catch (Exception e) {

    }

    }

    public List getSelect() {

    List list = new ArrayList();

    conn = getConn();

    //Statement st;

    ResultSet rs;

    String name = null;

    String pwd = null;

    String sql = "select * from Userinfo";

    try {

    Statementst = conn.createStatement();

    rs = st.executeQuery(sql);

    while (rs.next()) {

    Userinfo user = new Userinfo();

    name = rs.getString("USERNAME");

    pwd = rs.getString("PASSWORD");

    user.setUsername(name);

    user.setPassword(pwd);

    list.add(user);

    System.out.println("用户名:" + user.getUsername() + ",密码:"+ user.getPassword());

    }

    } catch (SQLException se) {

    se.printStackTrace();

    } catch (Exception e) {

    e.printStackTrace();

    }

    return list;

    }

    public static void main(String[] args) {

    Basesql bd = new Basesql();

    Connection conn=null;

    conn=bd.getConn();

    bd.getSelect();

    }

    }

    展开全文
  • 链表分为单链表,双向链表和循环链表,是一种链式存储结构,由一个个结点链式构成,结点包含数据域和指针域,其中单链表是只有一个指向后驱结点的指针,双向链表除头结点和尾结点外,每个结点都有一个前驱指针和一个后继...

    链表分为单链表,双向链表和循环链表,是一种链式存储结构,由一个个结点链式构成,结点包含数据域和指针域,其中单链表是只有一个指向后驱结点的指针,双向链表除头结点和尾结点外,每个结点都有一个前驱指针和一个后继指针,循环链表的尾结点的指针指向头结点.

    相比数组而言,链表的插入和删除比较快,查询慢.

    本文主要以单链表为例,介绍下链表的常用算法操作.

    单链表的结构:

    12968b9b95e5ad4b776a6edbb55f24c2.png

    在java语言中,链表的每个结点用Node类来表示:

    package com.linkedlist;

    public class Node {

    private int data;// 结点数据

    private Node next;// 下一个结点

    public Node(int data) {

    this.data = data;

    }

    public int getData() {

    return data;

    }

    public void setData(int data) {

    this.data = data;

    }

    public Node getNext() {

    return next;

    }

    public void setNext(Node next) {

    this.next = next;

    }

    }

    定义一个链表操作类,里面包含常用的操作:

    package com.linkedlist;

    import java.util.Hashtable;

    public class LinkedListOperator {

    private Node head = null;// 头结点

    // 在链表的末尾增加一个结点

    private void addNode(int data) {

    Node newNode = new Node(data);

    if (head == null) {

    head = newNode;

    return;

    }

    Node temp = head;

    while (temp.getNext() != null) {

    temp = temp.getNext();

    }

    temp.setNext(newNode);

    }

    // 打印链表结点

    private void printLink() {

    Node curNode = head;

    while (curNode != null) {

    System.out.println(curNode.getData());

    curNode = curNode.getNext();

    }

    System.out.println("===========");

    }

    // 求链表长度

    private int getLength() {

    int len = 0;

    Node curNode = head;

    while (curNode != null) {

    len++;

    curNode = curNode.getNext();

    }

    return len;

    }

    // 删除某一个结点

    private boolean delNode(int index) {

    if (index < 1) {

    return false;

    }

    if (index == 1) {

    head = head.getNext();

    return true;

    }

    Node preNode = head;

    Node curNode = head.getNext();

    int n = 1;

    while (curNode.getNext() != null) {

    if (n == index) {

    preNode.setData(curNode.getData());

    preNode.setNext(curNode.getNext());

    return true;

    }

    preNode = preNode.getNext();

    curNode = curNode.getNext();

    n++;

    }

    if (curNode.getNext() == null) {

    preNode.setNext(null);

    }

    return false;

    }

    // 链表排序:选择排序法,从小到大

    private void sortList() {

    Node curNode = head;

    while (curNode != null) {

    Node nextNode = curNode.getNext();

    while (nextNode != null) {

    if (curNode.getData() > nextNode.getData()) {

    int temp = curNode.getData();

    curNode.setData(nextNode.getData());

    nextNode.setData(temp);

    }

    nextNode = nextNode.getNext();

    }

    curNode = curNode.getNext();

    }

    }

    // 去掉重复元素

    private void distinctLink() {

    Hashtable map = new Hashtable();

    Node curNode = head;

    Node preNode = null;

    while (curNode != null) {

    if (map.containsKey(curNode.getData())) {

    preNode.setData(curNode.getData());

    preNode.setNext(curNode.getNext());

    } else {

    map.put(curNode.getData(), 1);

    preNode = curNode;

    }

    curNode = curNode.getNext();

    }

    }

    // 返回倒数第k个结点,定义两个指针,第一个指针向前移动K-1次,之后两个指针同时前进,

    // 当第一个指针到达末尾时,第二个指针所在的位置即为倒数第k个结点

    private Node getReverNode(int k) {

    if (k < 1) {

    return null;

    }

    Node first = head;

    Node second = head;

    for (int i = 0; i < k - 1; i++) {

    first = first.getNext();

    }

    while (first.getNext() != null) {

    first = first.getNext();

    second = second.getNext();

    }

    return second;

    }

    // 反转链表

    private void reserveLink() {

    Node preNode = null;

    Node curNode = head;

    Node tempNode = null;

    while (curNode != null) {

    tempNode = curNode.getNext();

    curNode.setNext(preNode);

    preNode = curNode;

    curNode = tempNode;

    }

    head = preNode;

    }

    // 寻找链表的中间结点

    private Node getMiddleNode() {

    Node slowNode = head;

    Node quickNode = head;

    while (slowNode.getNext() != null && quickNode.getNext() != null) {

    slowNode = slowNode.getNext();

    quickNode = quickNode.getNext().getNext();

    }

    return slowNode;

    }

    // 判断链表是否有环

    private boolean isRinged() {

    if (head == null) {

    return false;

    }

    Node slowNode = head;

    Node quickNode = head;

    while (slowNode.getNext() != null && quickNode.getNext() != null) {

    slowNode = slowNode.getNext();

    quickNode = quickNode.getNext().getNext();

    if (slowNode.getData() == quickNode.getData()) {

    return true;

    }

    }

    return false;

    }

    // 删除指定结点

    private boolean delNode(Node node) {

    if (node.getNext() == null) {

    return false;// 在不知道头结点的情况下,没法删除单链表的尾结点

    }

    node.setData(node.getNext().getData());

    node.setNext(node.getNext().getNext());

    return true;

    }

    // 判断两个链表是否相交:相交的链表的尾结点相同

    private boolean isCross(Node n1, Node n2) {

    while (n1.getNext() != null) {

    n1 = n1.getNext();

    }

    while (n2.getNext() != null) {

    n2 = n2.getNext();

    }

    if (n1.getData() == n2.getData()) {

    return true;

    }

    return false;

    }

    // 求相交链表的起始点

    private Node getFirstCrossNode(LinkedListOperator l1, LinkedListOperator l2) {

    int len = l1.getLength() - l2.getLength();

    Node n1 = l1.head;

    Node n2 = l2.head;

    if (len > 0) {

    for (int i = 0; i < len; i++) {

    n1 = n1.getNext();

    }

    } else {

    for (int i = 0; i < len; i++) {

    n2 = n2.getNext();

    }

    }

    while (n1.getData() != n2.getData()) {

    n1 = n1.getNext();

    n2 = n2.getNext();

    }

    return n1;

    }

    public static void main(String[] args) {

    LinkedListOperator llo = new LinkedListOperator();

    llo.addNode(10);

    llo.addNode(4);

    llo.addNode(6);

    llo.addNode(8);

    llo.printLink();

    // llo.delNode(4);

    // llo.sortList();

    // llo.distinctLink();

    // System.out.println(llo.getReverNode(3).getData());

    // llo.reserveLink();

    // System.out.println(llo.getMiddleNode().getData());

    // System.out.println(llo.isRinged());

    llo.delNode(llo.head.getNext().getNext());

    llo.printLink();

    }

    }

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

    时间: 2019-09-16

    展开全文
  • 今天用java连接数据库,查出的数据有的字段为空 就好像我的person_name字段 在网上数据知道,这有两种情况一种是为null,一种是empty 解决方法: 在取得时候在前面加一下判断 即!=null和!isEmpty() 想...

    记录一下实习中遇到的问题

    今天用java连接数据库,查出的数据有的字段为空

    就好像我的person_name字段

    在网上查数据知道,这有两种情况一种是为null,一种是empty

    解决方法:

    在取得时候在前面加一下判断

    即!=null和!isEmpty()

    想知道更好的解说可以看一下这位博友的文章

    http://blog.sina.com.cn/s/blog_77e94100yebj.html0bd0

    展开全文
  • //因为查询出来的信息包括表头信息,所以指针下移一行,看是否有查询出的数据 //如有数据,就进入循环体封装该行数据 while (rs.next()) { DormBuild build = new DormBuild(); build....
  • Java 数据查询

    2019-02-26 21:36:06
    当你在网页搜索时候就涉及到了数据库查询。如何用JDBK查询数据库呢?...如果调用next()方法,它的指针会往下移一行,并且有数据返回true,当返回faluse时就表示数据读完了。 除了next()方法,还有fis...
  • 开始获取不到需要的数据,开始进行分步调试在调试的过程中跳转到以下位置:catch (InvocationTargetException ex) { throw ex.getTargetException(); } 网上到说是有异常你自己没有捕获,然后就被这里捕获了。 ...
  • 报空指针错误。 但是为啥会报错? 用statement时候就没有报错,学用preparestatement时候就报错了。 这是为什么? <br> ```java import java.sql.Connection; import java.sql....
  • 首先检查Sql语句是否存在问题,字段名、表名是否对应一致,将Sql语句放到navicat或其他数据库管理工具中运行,查看是否可以正确运行并返回预期结果。 检查mapper是否注入,我是多个mapper注入时下面mapper没有写...
  • 单链表:单链表有一个指针和一个数据域,所以单链表只能通过这一个指针进行正向的访问节点的数据,操作简单。 双链表:除了有一个指向下一结点的指针外,还有一个指向前一结点的指针,可以通过前指针快速找到前一...
  • hibernate执行表与表之间多对一查询时,如果数据库中没有数据时,一切正常,一旦将数据插入到数据库中,查询时候将会抛出空指针异常。以下是我*.hbm.xml配置 <!DOCTYPE hibernate-mapping PUBLIC "-//...
  • 数据库和表都建好了,但是表中还没有写入数据,查询时候出现了空指针异常错误。 异常类型:java.lang.NullPointerException 解决方案: 我用解决方法是使用try、catch,例如下代码,但实际这样写是不规范仅...
  • Java的数据分为引用数据类型和基础数据类型,在Java中不存在指针的概念,但是对于链表而言的指针,指的就是引用数据类型的地址。链表和数组都是线性的数据结构,对于数组而言其长度是固定的,由于在内存中其是...
  • Java的数据分为引用数据类型和基础数据类型,在Java中不存在指针的概念,但是对于链表而言的指针,指的就是引用数据类型的地址。链表和数组都是线性的数据结构,对于数组而言其长度是固定的,由于在内存中其是...
  • 最近学习javaweb,在从数据库数据添加到list时候,系统提示空指针异常,如图所示: 向上看sonList初始化方法是:private List sonList=null; 原来这个地方出现错误,因为只在栈中有引用而在堆中没有分配...
  • 提示空指针异常,说明错误处在controller,没有获取到swagger传过来的数据,发现把 @PostMapping("getUserList/{page}/{limit}")写成了@getMapping("getUserList/{page}/{limit}") 重新测试,成功 ...
  • Java实现,数据结构-链表增删改链表介绍链表单链表双向链表实现过程代码实现结果 链表介绍 链表 概述:是一种常见基础数据结构,是一种线性表,但是并不会按线性顺序存储数据,而是在每一个节点里存到下...
  • Java实现基础数据结构0,常用基础数据结构图1 基础数据结构&相关特性图2 Java自带类集框架&继承关系图1,数组【Array】特点:长度固定、查找方便【直接使用index查找即可】、增加、删除麻烦。图3 数组...
  • 双指针 双指针也是所谓滑动窗口算法。...二分也是利用双指针的思想。 import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; /** * Title:NC41-最长无重复, 数组中
  • 我是这么写,list中是有数据的,为什么回显报空指针 HTTP Status 500 - Could not write content: (was java.lang.NullPointerException) (through reference chain: com.taotao.common.result.TaoResult["rows"]...
  • [Java教程]在PL/SQL使用游标获取数据及动态SQL02015-07-11 19:00:141.游标概念:当在PL/SQL块中执行DML(增删改)时,Oracle会为其分配上下文区(Context Area),游标是指向上下文区的指针2. 游标分类:A. 隐式游标a. ...
  • java中主要的数据结构

    2019-02-14 10:27:45
    而链表是非连续内存空间,通过指针关联前后顺序,链表查询元素速度比较慢   缺点: 1)大小固定,不方便动态添加数据(动态添加或删除数据会影响大部分数组元素,效率较链表低);(链表可以动态添加...
  • 练习3:从索引为start的数据开始查找count个,并返回数据 package mysql; /*ResultSet.next()是在结果集中找下一个结果,想要得到结果的返回值必须先调用next()将指针 * 放在第一个数据上 */ import java.sql....
  • 异常:java.lang.NullPointerException   解决方案: try{ hotelImageList = ihotelImgManager.query(hiqc); }catch(Exception e){ System.out.println("无数据"); }  
  • 链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 单链表的实现原理 在单链表中,我们定义一...
  • 今天使用Java定时任务时候遇到了一个坑,就是在使用定时器时候,直接在定时器内操作了数据,结果报空指针异常,了贴子才发现,原来是定时器内不允许操作数据,这里贴出了定时器内操作数据的实例,方便使用小...
  • Java的数据结构

    2018-04-03 11:02:55
    Java中最基础的数据结构有两种:1.数组 特点是连续空间,寻址迅速,但因为在增删元素时有较大的移动,所以“查询快,增删慢”; 数组初始化时会将元素放在栈区,系统自动申请内存;2.链表 特点是空间不连续,寻址...
  • java的数据结构

    2018-04-22 23:00:00
    常见的数据结构 线性表(list) 1、有序列表,就像小朋友排队(一队)放学出校门,插入的顺序作为遍历的顺序,位置不变(长度固定) 2、顺序存储:从起始位置开始依次向后存储,查询方便,但是插入(排队加塞)和删除...
  • 事故发生:SQL语句没有问题,可以执行出结果,但是在java代码中报 Mapper这块空指针 java代码段报错:报22行空指针 原因:Mapper没有加注解,导致无法扫描 解决办法:给Mapper方法加注解@Autowired Emm...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 468
精华内容 187
关键字:

java查指针的数据

java 订阅