博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于字符串为空的判断条件
阅读量:5365 次
发布时间:2019-06-15

本文共 3023 字,大约阅读时间需要 10 分钟。

第一篇随笔,正好今天解决了一个问题,立马记录下,希望是好习惯的开始。

 

问题描述:读取一个记录SQL查询语句的XML文档,生成SQL查询字符串。

XML文档如下所示:

SQLServer
t_product
ID=1

希望得到的字符串结果为:select * from t_product  where ID=1

先贴下我一开始编写的代码:

public string XmlToSQL(XmlDocument doc)    {        string str_select, str_from, str_where, str_order, str_group;        str_select = null;        str_from = null;        str_where = null;        str_order = null;        str_group = null;        XmlNode node_select, node_from, node_where, node_order, node_group;        XmlNode root = doc.DocumentElement;        node_select = root.SelectSingleNode("Select");        str_select = node_select.InnerText;        node_from = root.SelectSingleNode("From");        str_from = node_from.InnerText;        node_where = root.SelectSingleNode("Where");        str_where = node_where.InnerText;        node_order = root.SelectSingleNode("Order");        str_order = node_order.InnerText;        node_group = root.SelectSingleNode("Group");        str_group = node_group.InnerText;        string str = "select " + str_select + " from " + str_from;        if (str_where.Length !=null )        {            str += " " + " where " + str_where;        }        if (str_order.Length !=null)        {            str += " " + " order by "+str_order;        }        if (str_group.Length !=null)        {            str += " " + " group by " +str_group;        }        return str;    }

运行结果为:select * from t_product  where ID=1  order by   group by 

不是预期结果。

当时思考str_order和str_group两个字符串的结果应该为null,不清楚哪里出错。

然后编写测试程序,测试发现,这两个字符串结果不为null。

字符串为空,但不为null。这个点,我之前一直都是理解错误了。

然后想到通过测试字符串的长度作为判断条件。

于是修改代码如下:

public string XmlToSQL(XmlDocument doc)    {        string str_select, str_from, str_where, str_order, str_group;        str_select = null;        str_from = null;        str_where = null;        str_order = null;        str_group = null;        XmlNode node_select, node_from, node_where, node_order, node_group;        XmlNode root = doc.DocumentElement;        node_select = root.SelectSingleNode("Select");        str_select = node_select.InnerText;        node_from = root.SelectSingleNode("From");        str_from = node_from.InnerText;        node_where = root.SelectSingleNode("Where");        str_where = node_where.InnerText;        node_order = root.SelectSingleNode("Order");        str_order = node_order.InnerText;        node_group = root.SelectSingleNode("Group");        str_group = node_group.InnerText;        string str = "select " + str_select + " from " + str_from;        if (str_where.Length >0 )        {            str += " " + " where " + str_where;        }        if (str_order.Length > 0)        {            str += " " + " order by "+str_order;        }        if (str_group.Length > 0)        {            str += " " + " group by " +str_group;        }        return str;    }

结果正确。

可以看出,改动幅度很小。

实现了具体目标,但并不清楚自己所用方法是否为最佳。

欢迎讨论。

转载于:https://www.cnblogs.com/trey/p/4682689.html

你可能感兴趣的文章
As-If-Serial 理解
查看>>
洛谷P1005 矩阵取数游戏
查看>>
在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
查看>>
无线通信基础(一):无线网络演进
查看>>
关于python中带下划线的变量和函数 的意义
查看>>
linux清空日志文件内容 (转)
查看>>
Ajax : load()
查看>>
MySQL-EXPLAIN执行计划Extra解释
查看>>
图片点击轮播(三)-----2017-04-05
查看>>
直播技术细节3
查看>>
《分布式服务架构:原理、设计于实战》总结
查看>>
java中new一个对象和对象=null有什么区别
查看>>
字母和数字键的键码值(keyCode)
查看>>
01_1_准备ibatis环境
查看>>
JavaScript中的BOM和DOM
查看>>
360浏览器兼容模式 不能$.post (不是a 连接 onclick的问题!!)
查看>>
spring注入Properties
查看>>
jmeter(五)创建web测试计划
查看>>
1305: [CQOI2009]dance跳舞 - BZOJ
查看>>
将html代码中的大写标签转换成小写标签
查看>>