java与SQL Server连接,使用查询语句后得不到结果,是nvchar的原因?谢谢

查询主要代码块:

 public Object[][] queryBookByName(String type, String bookName) {
        // 测试值type = "进货", bookName = "C++"
        Object[][] resultObjects = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        conn = ConnectionSql.connectionSql();
        if(type.equals("进货")) {
            String sql = "select * from bookInList where bookName=?";
            if(conn!=null) {
                try {
                    statement = conn.prepareStatement(sql);
                    statement.setString(1, bookName);
                    resultSet = statement.executeQuery();
                    int count = 0;        //这一步resultSet为空,得不到结果
                    if(resultSet.next()) {
                        resultSet.last();
                        count = resultSet.getRow();
                        resultObjects = new Object[count][3];
                        resultSet.beforeFirst();
                        ......
                    }

                } catch (Exception e) {
                    // TODO: handle exception
                } finally {
                    ConnectionSql.closeConnection(conn, statement, resultSet);
                }   
            }

数据库是有数据的,但是就是查不出来,jdbc连接等等正常~
如果在数据库使用"select * from bookInList where bookName='C++' "是可以得到结果的。是不是因为bookName的数据类型是nvchar(20)的原因,求解?
图片说明
图片说明

0

4个回答

应该不是。感觉是statement.setString(1, bookName);这一块前后出问题了。

1
qq_24058893
dn96 解决了,犯了个小错误,ResultSet的结果集如果需要游标进行前后移动的话,在create的时候要给出相应值。
2 年多之前 回复
qq_24058893
dn96 可能是是这块的原因,刚才试了,不加where限制也查询不到~
2 年多之前 回复
qq_24058893
dn96 明天再去看看谢谢
2 年多之前 回复

nvarchar是Unicode的varchar,而C++都是英文字符,不影响的
问题应该是预编译处理那里,楼主可以试试setNString

0
qq_24058893
dn96 好的,明天去看看。谢谢。
2 年多之前 回复

将statement = conn.prepareStatement(sql);改为
statement = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
设置游标能够前后移动,且结果集变化不引起数据库变化即可!

0

主要是你的bookname的编码格式跟数据库一致,否则就查不出来

-1
wxliujiayu
wxliujiayu 回复XhuDN: 。
2 年多之前 回复
wxliujiayu
wxliujiayu
2 年多之前 回复
qq_24058893
dn96 好的,明天去实验室看看
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java 原生 jdbc api 获取通用的查询sql语句的结果集(自定义)
maven依赖nnn<dependency>n <groupId>mysql</groupId>n <artifactId>mysql-connector-java</artifactId>n <version>5.1.31</version>n </dependency>
jdbc连接mysql数据库执行sql语句ResultSet结果集一直为空
问题描述:ResultSet rs=sqlstatement.executeQuery(sql); 执行后查询语句后rs一直为空,但是将sql语句放到数据库中进行查询却能得到结果.rn解决:sql=“select * from table where name=‘张三’”;当查询语句中涉及中文的时候就会出现上述问题,主要是编码问题,数据库的编码为utf-8,,但是jdbc的url的地址却没有指定编
python连接SQLServer数据库,执行给定的查询SQL语句,并返回查询结果数据
    今天在使用SQL语句做查询任务的时候发现,在数据库中可以直接执行的语句,放在程序中结果却是None,于是乎,就实践了一下,下面是具体的实践。nnn#!usr/bin/env pythonn# encoding:utf-8nnn'''n__Author__:沂水寒城n功能:执行给定的查询SQL语句,并返回查询结果数据n'''nnnimport sysnimport pymssqlnreloa...
Java与SqlServer连接,JDBC,执行数据库查询操作
1.Java与sqlserver连接跟Mysql不同的地方:nnDriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());nnjdbc:sqlserver://localhost:1433;DatabaseName=students1nn2.关闭rs.close()之前要判空if(rs!=nul...
两个sql查询语句之间的左连接left join
代码如下:子查询内部也使用了左连接select a.id, a.thumbNail,a.name,a.marketPrice,a.memberPrice ,a.personName,a.status,a.recieveOrderDate,a.trackNumber,a.contact,a.reportSendDate,b.trackNumber,a.reportDownloadPath from 
JAVA 连接SQL SERVER查询数据
import java.sql.*;npublic class L10_11 {n    public static void main(String[] args)n    {n        String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";//加载驱动n        String dbURL="jdbc:sql...
用JAVA连接SQL实现查询数据
显示所有学生代码nnn<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.sql.*"n pageEncoding="UTF-8"%>n<!DOCTYPE html>n<html>n<head>n<
Java链接sql server并对它进行查询、增删改
将java中关于数据库的操作封装到一个类里
Java中使用JDBC从SqlServer获取到的ResultSet结果集为空
我在Servlet中使用JDBC连接SqlServer后 n从数据库进行了查询操作 n但得到的ResultSet结果集在调用时出现了空指针的异常这是因为获取到的ResultSet结果集的第0个结果是为空的 n从数据库中获取的数据是从第1个开始排列的 n只需调用next()方法就可以解决了示例代码:package sqlserver.selecter.meal;import java.sql.Resu
JDBC学习笔记(查询SQL语句得到的结果对象)
通过Statement或PreparedStatement执行查询SQL语句后会得到一个结果对象(ResultSet)nn nn一、ResultSet:结果集,操作查询操作后的数据表nn 本质:ResultSet里有一个行指针,指向数据表,默认指向第一行的上方。nn * 有以下方法:nnn             * next():将指针往下移动一行,当返回为true时返回当前指向的行数据,否则为...
C3P0数据库连接池SQL语句的简单总结
UserDao.javanpackage com.dao;nnimport java.util.List;nnimport org.apache.commons.dbutils.QueryRunner;nimport org.apache.commons.dbutils.handlers.BeanHandler;nimport org.apache.commons.dbutils.handler
mssql数据库 char vchar nchar nvchar异同
mssql数据库 char vchar nchar nvchar异同,为我自己备份,同时也方便大家而已~
关于多表查询sql常用的连接语句:左外连接、右外连接、内连接
1)内联接:n   内联接使用比较运算符(使用像n =  或 )根据每个表共有的列的值匹配两个表中的行,根据这两张表中相同列的条件,得出其交集。例如:  检索 students和courses表中学生标识号相同的所有行。   nnnn2)左向外联:n      是用的是LEFT  JOIN或LEFT OUTER JOIN n    连接语句。n      根据两张表的关系(外键关
java查询语句包含中文获取不到数据库数据
最近在搞java课程设计,在查询数据库数据的时候只要查询语句中包含中文就怎么都查询不到数据,想想应该是文件编码问题,看了一下数据库编码为utf-8,又看了一下源文件编码,居然是gbk,将gbk改为了utf-8,再次查询,果然可以获取数据,记于此惊醒自己。
关于在SQL中使用触发器是怎么将另一个查询结果作为一条插入语句的值
触发器:ncreate trigger Pj_trigger before update on pjxt_majorcourseinfo for each row nbeginn declare zy varchar(20);n set zy=old.ZYMC;n if old.PJ=0 AND new.PJ=1n thenn insert into pjxt_o...
调试经验——使用DBLINK查询非常耗时且不可靠(原因不在于DBLINK,而在于SQL代码中漏添加了DBLINK语句)
问题描述:nn由于生产环境数据库只提供了查询权限(read-only privilege),只能在开发环境中创建自定义函数。但是,报表所需的数据仅存在于生产数据库中,在开发数据库中是空表。所以,试图通过DBLINK的方式通过开发数据库中访问生产数据库。但是,发现一个比较坑的地方:使用DBLINK查询非常耗时且不可靠。nn具体表现在:nn同样的SQL,在开发环境中半天查不出结果。即使取消执行,也会停...
SQL Server 通过SQL语句将查询结果集拼接成字符串
准备nn首先,我们要了解一下两个SQL函数nn1. FOR XML PATH nFOR XML PATH 可以将查询结果根据行输出成XML各式nnSELECT USER_ID FROM test FOR XML PATHnn表结构: n n执行结果:nn<row>n <USER_ID>1</USER_ID&am
SQL语句关联查询,UNION ALL用法,结果中查询
SQL语句的关联查询nn从多个关联性的表中查询数据nn例如有三个表格,表结构相同:rls,mlx,yjx三个表。nnnnnn在单一的查询语句之后加上UNION ALLnnSQL UNION ALL 语法nnnnSELECT column_name(s) FROM table_name1nUNION ALLnSELECT column_name(s) FROM table_name2nnUNION ...
VC++使用SQL查询操作数据库示例
VC++使用SQL查询操作数据库示例,两个VC++与数据库的范例,可运行
SQLSERVER通俗易懂的连接查询、联合查询
     最近有好多小伙伴对连接查询有很多的疑问,当然包括初学者和工作几年的老鸟so,抛开那些数学公式,我打算用通俗易懂的图文方式来对连接和联合查询做一些自己的见解,还有更高明的还希望各位不吝赐教首先创建两个表,学生和班级表,一个班级对应多个学生--新建学生表nselect * into Studentnfrom n(select 1 as id ,'张三' as name , 18 as age...
Java中使用同样的sql语句在数据库中可以查询出结果,但是在程序中确无法查询出结果——解决方法
最近在写一个JavaWeb项目的时候遇到了一个问题就是,同样的sql语句在数据库中可以查询出结果,但是在程序中确无法查询出结果,今天给大家带来解决方案nn如图所示,这是我在navicat中测试好的sql语句,但是在这里查询出来的结果集和确是空。nn但是我之前查询所有商品时,并没有出现任何问题,可以查到结果。n所以,如果你也遇到了这种情况就要注意了,很有可能是你的程序只有在sql语句中有中文时不能正...
sql server——分组查询
sql server里分组查询通常用于配合聚合函数,达到分类汇总统计的信息。而其分类汇总的本质实际上就是先将信息排序,排序后相同类别的信息会聚在一起,然后通过需求进行统计计算。nn使用Group BY 进行分组查询nn--查询男女生的人数nn在没有学习分组查询之前,我们可以安装常规的思路解决查询需求:nnselect count(*) from person where sex='男'nn...
sqlserver中查询语句case when判断的用法
今天帮同事统计表格,给我了个sql语句,又给我了份excel模板,但是sql语句查询出来的结果和模板对不上,这导致还得人工一条一条的找这些数据,然后手动填写结果...这太tm麻烦了...nexcel模板如下(简化版):nnnnn机构\日期n5月13日n5月15日nnn某某机构1n是n否nnn某某机构2n否n是nnn.。。。n n nnnnns
SQL server内连接查询
内连接select top*  from A join B on... join C on... where... group by... having... order by...1.//在scott表中查询员工名字中不包含A的所有员工,前三名员工的姓名,工资,工资等级,部门名字select top 3 "E".ename,"E".sal,"S".grade,"D".dname from emp...
java servlet jdbc 连接sqlserver数据库查询和修改
效果图:nnn2、Java类npackage shop.hh;nnpublic class Book {n // 编号n private int id;n // 图书名称n private String name;n // 价格n private double price;n // 数量n private int bookCount;n // 作者n private String auth
C#中窗体程序连接数据库执行SQL语句查询
用到的开发软件是VS2008 和SQL server 2008nnnn首先就这么一个简单的窗口,以下是窗体的一些简单的代码。n nnnusing System;nusing System.Collections.Generic;nusing System.ComponentModel;nusing System.Data;nusing System.Drawing;nusing System.Li...
SQL的四种连接查询
 SQL数据库中有两张表,一张人员(T_Person)表、一张卡(T_Card)表,人基本上都那么几张卡,像银行卡、饭卡、水卡、电费卡……(T_Person)(T_Card)内连接1.内连接(inner join 或 join)        内连接是等值连接,它使用“=、>、<、<>”等运算符根据每个表共有的列的值匹配两个表中的行查询语句:[sql] view plain...
sql 自连接查询结果
drop table guojia;ncreate table guojia(name varchar2(20));ninsert into guojia(name)values('中国');ninsert into guojia(name)values('美国');ninsert into guojia(name)values('巴西');ninsert into guojia(name)val...
sql server 语句查询、函数
-- 使用 select语句进行查询《按查询的列名显示,有条件限制就只显示条件部分》n语法:nselect 列名 from 表名 【where 查询的条件表达式】 【order by 列名 】n *** 其中where 条件是可选的,若不限制,则查询返回所有行的数据项。n *** order by 是用来排序的nnnnn-- 基本查询的不同情况:n** 查询所有的数据行和列《*
sql server中为什么不建议使用not in
sql server中为什么不建议使用not in
有关 SQLserver + JavaWeb端 多条件结果集 分页显示 的一点总结
三种实现多条件结果集分页的方式,可能还有其他方法
存储过程实现查询后更新&&与只用sql一句话的对比
存储过程实例nnn存储过程–以基本信息表为基准,使任务表的规划基站名与其一致nnnnnDELIMITER $$nnDROP PROCEDURE IF EXISTS copySur_station_name $$nnCREATE PROCEDURE copySur_station_name () nBEGINn/*局部变量的定义 declare*/nDECLARE pn VARCHAR (100) ...
sql语句查询中要注意as后面别名不要与关键词有冲突
今天在跑一个老的项目的时候发现一条查询语句报错select count(id) as count from member 然后把这个语句在一些数据库管理工具中查询,都可以得到正确的结果。为什么在项目中提示错误呢?因为as count 这里的问题,count本身是关键字,而as count的写法,让解析器误认为关键字写的不完整,所以就报错了。所以,as后面的别名,一定要与关键字区别开。如果写sele...
Myeclipse中java代码连接mysql数据库查询执行查询语句有中文乱码问题
Myeclipse的默认编码是gbk,所以要把mysql的编码也编程gbk。n方式是在mysql的my.ini文件中[client]下改为default-character-set = gbk:nPS:注意在改之前要关掉mysql的服务。n如果之前建好了表建议删掉重新建表。nn...
操作SQL语句返回的结果集
本文章原创于www.yafeilinux.com 转载请注明出处。数据库表中的一行就叫做一条记录,一列是一个属性。使用query.exec(“select* from student”);来查询出表中所有的内容,便获得了相应的执行结果,因为获得的结果可能不止一条记录,所以我们称之为结果集。结果集其实就是查询到的所有记录的集合(注意这个集合中的记录是从0开始编号的),需要说明,当刚执行完query....
SQL SERVER2008数据查询语句集
1.===========================================类USE E_TestDataselect * from TDATA WHERE Model='MS-B85-BTC' and Date_Time   LIKE '2018/02/04 19%' --order by Date_Time DESCselect count(Date_Time) from TDA...
关于在Java中链接SQLServer数据库中失败的原因分析
关于在Java中链接SQLServer数据库
JSP | 使用预处理语句对象操作数据库
·核心知识             可以使用Connection的对象con调用prepareStatement(String sql)方法对参数sql指定的SQL语句进行预先编译,生成数据库的底层命令,并将该命令封装在PreparedStatement对象中。对于SQL语句中变动的部分,可以使用通配符“?”代替。例如:PreparedStatement ps = con.prepareState...
使用PHP执行SQL命令处理没有返回结果集的情况
$link=mysql_connect('localhost','root','158369');rn    if(!$link){rn        die('连接失败:'.mysql_error);rn    }rn    echo "与mysql服务器建立的连接成功;";rn    rn    echo mysql_get_client_info();rn    echo "";rn    
SQL与ORACLE建立链接并进行查询及插入操作
资料中包含详细操作步骤,如有不清楚地方可随时咨询我
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 人工智能培训谢谢 大数据学习java的原因