java中一个对象的属性为String 在mysql中对应text列 表有该列数据,可是读取该列的时候为null,求解决方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中一个对象的属性为String 在mysql中对应text列 表有该列数据,可是读取该列的时候为null,求解决方法相关的知识,希望对你有一定的参考价值。
sql语句在数据库跑一下,是否得到数据。然后确定属性与表中的字段对应,且已经将表中数据转化成对象实例,将字段的数据对应的放入对象实例的属性追问这个应该没错 其他的列能正常获取
追答确定能在数据库中运行sql并得到字段数据后,判断数据库中的字段类型,和java中的属性类型,是否匹配,如果不匹配,可能会出现少数据或者属性得不到字段数据
网上查一下你使用的数据库(sqlserver or oracle or。。。)中的text类型与java中所匹配的数据类型,或者在java中的取出方法
我是用phpAdmin 来控制数据库的 能执行sql语句 并且能返回text的值 就是在java程序中无法取出该列的值
追答好像不能直接用java中的String接数据库text值,应该用getClob(“字段名”).toString()之类的转化一下
如果是用框架(hibernate,ibatis,jpa,。。。),应该就没问题,框架内部会自动调节
最后一个列名可是是别名随便起的,这样原来没有值的列查出来就是'' 参考技术B 可能是你在用对象调用数据库的列的位置方面显示错误。
例如:String text = rs.getString(2); 这其中的2代表就是该text列在第二列。 数据库是从第1列开始的。
还有一种情况可能是你数据库连接出问题了 导致不能获取到text列中的值!追问
这个应该没错 其他的列能正常获取
追答看看你获取text列的属性是否与你的java类型匹配,如果不匹配那么返回的可能就是NULL。如果还是不行 你把你的java对象的属性设置为Object试试。
参考技术C 你说的他模糊了。。。。。能不能说的详细一下,你是用什么方法去连接数据库的,取值的时候别的字段的只能不能取到?追问别的能取到 只要 是数据库是text类型的就不能取出
参考技术D 连接数据库写错了没 , 测试一下看看 获取了几条数据追问这个一定没错 其他的列正常获取
如何在java中将String转换为DOM Document对象?
【中文标题】如何在java中将String转换为DOM Document对象?【英文标题】:How to convert String to DOM Document object in java? 【发布时间】:2012-01-19 01:45:05 【问题描述】:我有一个案例,比如获取一个 XML 并将 XML 元素转换为文档对象并获取我已经创建的元素值和属性
这是我尝试将字符串转换为 DOM 文档对象的一段代码
String xmlString = " <r><e>d</e></r>";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
org.w3c.dom.Document document = builder.parse(new InputSource(new StringReader(xmlString)));
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new StringWriter());
transformer.transform(source, result);
String str1 = result.getWriter().toString();
System.out.println(str1);
但是这种情况只对没有属性的元素有效 如果
String xmlString = "<element attribname="value" attribname1="value1"> pcdata</element>"
我们对属性值“value”使用双引号。编译器显示错误
建议我是否有任何 xml 编码器和解码器来处理这种情况??
【问题讨论】:
属性应该没问题 - 你看到了什么行为? 【参考方案1】:你可以试试
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader("<root><node1></node1></root>"));
Document doc = db.parse(is);
参考这个http://www.java2s.com/Code/Java/XML/ParseanXMLstringUsingDOMandaStringReader.htm
【讨论】:
没关系!!但是如果我们有一个像上面这样的属性和值呢??【参考方案2】:用\
转义双引号
String xmlString = "<element attribname=\"value\" attribname1=\"value1\"> pcdata</element>"
或者用单引号代替
String xmlString = "<element attribname='value' attribname1='value1'> pcdata</element>"
【讨论】:
【参考方案3】:DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = db.parse(new ByteArrayInputStream(xmlString.getBytes("UTF-8"))); //remove the parameter UTF-8 if you don't want to specify the Encoding type.
即使 XML 结构很复杂,这对我也很有效。
请确保您的 xmlString 对 XML 有效,注意转义字符应在前面添加“\”。
主要问题可能不是来自属性。
【讨论】:
【参考方案4】: public static void main(String[] args)
final String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"+
"<Emp id=\"1\"><name>Pankaj</name><age>25</age>\n"+
"<role>Developer</role><gen>Male</gen></Emp>";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try
builder = factory.newDocumentBuilder();
Document doc = builder.parse( new InputSource( new StringReader( xmlStr )) );
catch (Exception e)
e.printStackTrace();
【讨论】:
以上是关于java中一个对象的属性为String 在mysql中对应text列 表有该列数据,可是读取该列的时候为null,求解决方法的主要内容,如果未能解决你的问题,请参考以下文章