侃侃今天办公的一些遇到的话题吧,随心记录 。。。
首先是碰到一个“号称MySQL之BUG”的灵异事件,当MySQL数据表中当字段类型设置成【tinyint(1)】类型的时候,如果你用C#的DataSet对象读取表中信息,如代码:
public static DataSet GetRecommendDataSource(int platForm, Pagination pagination, ref XMLMessage msg)
{
int PageIndex = pagination.PageIndex > 0 ? pagination.PageIndex : 1;
int StartIndex = pagination.PageIndex * pagination.PageSize - pagination.PageSize;
string sql = string.Format(@"SELECT D.* FROM (SELECT A.f_id as id,A.f_name as name,1 as type,A.f_summary as descript,A.f_fwversion as version,A.f_imgsrc as postersUrl,
A.f_intro as startCount,B.c_id as cid,B.c_name as cname,A.f_size as size,A.f_author as author,A.f_admin as admin,A.f_format as installType,A.f_downnum as downloads,A.f_downurl as downloadUrl
FROM ssssss_files A,sssss_category B WHERE A.f_cateid=B.c_id ORDER BY A.f_intro DESC limit {0}) as D limit {1},{2}", pagination.RecordNum, StartIndex, pagination.PageSize);
try
{
return DBHelper.ExecuteDataset(CommandType.Text, sql, null);
}
catch (Exception se)
{
Log.Write(EventLevelCode.Error, se, string.Format("返回资源数据集异常,SQL语句:{0}", sql));
msg = new XMLMessage(MessageType.SQLError);
msg.ErrorList.Add(se.Message);
}
return null;
}
{
int PageIndex = pagination.PageIndex > 0 ? pagination.PageIndex : 1;
int StartIndex = pagination.PageIndex * pagination.PageSize - pagination.PageSize;
string sql = string.Format(@"SELECT D.* FROM (SELECT A.f_id as id,A.f_name as name,1 as type,A.f_summary as descript,A.f_fwversion as version,A.f_imgsrc as postersUrl,
A.f_intro as startCount,B.c_id as cid,B.c_name as cname,A.f_size as size,A.f_author as author,A.f_admin as admin,A.f_format as installType,A.f_downnum as downloads,A.f_downurl as downloadUrl
FROM ssssss_files A,sssss_category B WHERE A.f_cateid=B.c_id ORDER BY A.f_intro DESC limit {0}) as D limit {1},{2}", pagination.RecordNum, StartIndex, pagination.PageSize);
try
{
return DBHelper.ExecuteDataset(CommandType.Text, sql, null);
}
catch (Exception se)
{
Log.Write(EventLevelCode.Error, se, string.Format("返回资源数据集异常,SQL语句:{0}", sql));
msg = new XMLMessage(MessageType.SQLError);
msg.ErrorList.Add(se.Message);
}
return null;
}
这里假设我们的【f_intro】字段就设置为tinyint(1),那么通过DataSet方式读取后,你再将该字段展示的时候,你会发现结果为“true”或者"false"
那么如果避免这样的情况发生呢,思路就是将其用其他类型方式输出:
SQL语句改进 :
string sql = string.Format(@"SELECT D.* FROM (SELECT A.f_id as id,A.f_name as name,1 as type,A.f_summary as descript,A.f_fwversion as version,A.f_imgsrc as postersUrl,
A.f_intro+0 as startCount,B.c_id as cid,B.c_name as cname,A.f_size as size,A.f_author as author,A.f_admin as admin,A.f_format as installType,A.f_downnum as downloads,A.f_downurl as downloadUrl
FROM sjd_s60_files A,sjd_s60_category B WHERE A.f_cateid=B.c_id ORDER BY A.f_intro DESC limit {0}) as D limit {1},{2}", pagination.RecordNum, StartIndex, pagination.PageSize);
A.f_intro+0 as startCount,B.c_id as cid,B.c_name as cname,A.f_size as size,A.f_author as author,A.f_admin as admin,A.f_format as installType,A.f_downnum as downloads,A.f_downurl as downloadUrl
FROM sjd_s60_files A,sjd_s60_category B WHERE A.f_cateid=B.c_id ORDER BY A.f_intro DESC limit {0}) as D limit {1},{2}", pagination.RecordNum, StartIndex, pagination.PageSize);
这里我们将字段【f_intro】进行了一次加法运算,在看看DataSet中该字段的展示结果:正常显示 。
好了,这个问题解决了,接下来就闲聊起项目来,其中一个同学在这边比手划脚,谈天论地,不过他讲的一些东西我倒是蛮有感触的。于是整理了一下:
我觉得人活着吧,眼睛一睁一闭,就没了。所以吧人不能白活这一趟,我们有活得有意思有理想,
所以吧,我们在写程序的时候首先应该了解【项目部署】这个大学问,在期间我们要关注的东西比较多,比较将来项目的部署环境可能是怎样,我们现在应该用怎样的开发模式,应该用怎样的开发技术,才能应对将来项目部署环境对我们带来的影响,这里可能真的要考虑很多东西,真的,【项目部署】也是一门大学问 。。。(要关注)
还有一个同学提到一个所谓的【原子方法】
。。。。。。
浙公网安备 33010602011771号