存档

‘Web&IT业界’ 分类的存档

几点总结

2009年6月10日 低调の华丽 没有评论

1.项目开始前先确定数据表结构,逻辑关系一定要理顺。

2.根据需求自定义数据类,以及自定义exception类,在自定义类中对各种例外进行处理

3.中间层很好用,比如nhibernate这种架构,虽然还没用过。

4.在用户登录系统的时候提取用户权限等基本信息在cookies中,最好是加过密的。当然判断登录状态还得用session。

5.用户系统中,菜单栏由于权限不同导致显示不同,必须将其做成控件,便于修改和维护。

6.最好引入日志系统如log4net,便于测试以及后期维护。

ps:上面几点很多都是从java中取得的经验,引入到asp.net项目中。等时间充裕的时候好好研究C#桌面程序,感觉应该不难。哈哈,由于java桌面程序太烂实在是没兴趣做,这次终于可以施展一下了,顺便比较下java 和C#的区别

分类: Web&IT业界 标签: , ,

关于饭否

2009年5月25日 低调の华丽 4 条评论

微博客受到越来多人的认可,其实是从QQ签名中单独剥离出来的的一种互联网应用形式。微博客的好处在于实时性和随意性。从07年开始用饭否,到现在快两年了。关于饭否,想说几点

1.饭否可以针对好友进行回复,但是无法体现主题-跟贴这样的关系。往往看到很多好友在@别人的留言,但经常不知道他们在聊什么。当两个人在用饭否进行对话,其中一个人不是我好友的时候,我无法知道这个人在说什么。当我的好友在一个较短的时间发了多条饭否留言,而我对他的任何一条留言进行回复,他都不知道这条回复是针对哪条留言的,这样往往就会造成误解。解决这个问题的有效方法是设置饭否留言两种显示形式,一种是根据留言时间排列,一种根据留言回复关系排列。

2.饭否可以添加好友,但是当好友数量太多,而且其中很多好友是话痨的时候,你会发现你无法顺利查看好友留言。因为留言数量实在是太多了,想找到某一个人的最新留言可能要翻好几页才能找到。而另一些人的留言,铺天盖地的显示在你的饭否上。解决这个问题的方法是后台设置单个好友一天最多显示的留言条数,前台针对好友有一个选项,显示全部留言 or 显示最新留言。

3.饭否可以收藏别人的留言,但是这个功能确实相当的鸡肋。因为收藏的留言没有任何动态信息。一个比较不错的方法是将收藏改为分享,当分享某人的留言时,这条留言就会被其他好友看到。或者改为“顶”和“踩”,当你“顶”了某好友的留言后,饭否上会显示相关信息。在这个基础上可以做一个饭否排行榜,统计一天中被分享次数最多的留言(或者是被顶次数最多,被踩次数最多)。

饭否应该是一个web2.0时代的产物,但他现在确实做得不够web2.0. 希望饭否的开发者们如果看到了我这篇日志,多多采纳我的建议。如果做得好的话,饭否应该能超越twitter,至少占领中国市场应该是没问题的。

分类: Web&IT业界 标签: ,

使用SyntaxHighlighter插件使代码高亮显示

2009年4月8日 低调の华丽 没有评论

效果:

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace LiTianPing.SQLServerDAL //可以修改成实际项目的命名空间名称
{
    /// <summary>
    /// Copyright (C) 2004-2008 LiTianPing
    /// 数据访问基础类(基于SQLServer)
    /// 用户可以修改满足自己项目的需要。
    /// </summary>
    public abstract class DbHelperSQL
    {
        //数据库连接字符串(web.config来配置)
        //<add key="ConnectionString" value="server=127.0.0.1;database=DATABASE;uid=sa;pwd=" />
        protected static string connectionString = ConfigurationSettings.AppSettings["ConnectionString"];
        public DbHelperSQL()
        {
        }

        #region  执行简单SQL语句

        /// <summary>
        /// 执行SQL语句,返回影响的记录数
        /// </summary>
        /// <param name="SQLString">SQL语句</param>
        /// <returns>影响的记录数</returns>
        public static int ExecuteSql(string SQLString)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(SQLString, connection))
                {
                    try
                    {
                        connection.Open();
                        int rows = cmd.ExecuteNonQuery();
                        return rows;
                    }
                    catch (System.Data.SqlClient.SqlException E)
                    {
                        connection.Close();
                        throw new Exception(E.Message);
                    }
                }
            }
        }

        /// <summary>
        /// 执行多条SQL语句,实现数据库事务。
        /// </summary>
        /// <param name="SQLStringList">多条SQL语句</param>
        public static void ExecuteSqlTran(ArrayList SQLStringList)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;
                SqlTransaction tx = conn.BeginTransaction();
                cmd.Transaction = tx;
                try
                {
                    for (int n = 0; n < SQLStringList.Count; n++)
                    {
                        string strsql = SQLStringList[n].ToString();
                        if (strsql.Trim().Length > 1)
                        {
                            cmd.CommandText = strsql;
                            cmd.ExecuteNonQuery();
                        }
                    }
                    tx.Commit();
                }
                catch (System.Data.SqlClient.SqlException E)
                {
                    tx.Rollback();
                    throw new Exception(E.Message);
                }
            }
        }
        /// <summary>
        /// 执行带一个存储过程参数的的SQL语句。
        /// </summary>
        /// <param name="SQLString">SQL语句</param>
        /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
        /// <returns>影响的记录数</returns>
        public static int ExecuteSql(string SQLString, string content)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand cmd = new SqlCommand(SQLString, connection);
                System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
                myParameter.Value = content;
                cmd.Parameters.Add(myParameter);
                try
                {
                    connection.Open();
                    int rows = cmd.ExecuteNonQuery();
                    return rows;
                }
                catch (System.Data.SqlClient.SqlException E)
                {
                    throw new Exception(E.Message);
                }
                finally
                {
                    cmd.Dispose();
                    connection.Close();
                }
            }
        }
        /// <summary>
        /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)
        /// </summary>
        /// <param name="strSQL">SQL语句</param>
        /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>
        /// <returns>影响的记录数</returns>
        public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand cmd = new SqlCommand(strSQL, connection);
                System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image);
                myParameter.Value = fs;
                cmd.Parameters.Add(myParameter);
                try
                {
                    connection.Open();
                    int rows = cmd.ExecuteNonQuery();
                    return rows;
                }
                catch (System.Data.SqlClient.SqlException E)
                {
                    throw new Exception(E.Message);
                }
                finally
                {
                    cmd.Dispose();
                    connection.Close();
                }
            }
        }

        /// <summary>
        /// 执行一条计算查询结果语句,返回查询结果(object)。
        /// </summary>
        /// <param name="SQLString">计算查询结果语句</param>
        /// <returns>查询结果(object)</returns>
        public static object GetSingle(string SQLString)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(SQLString, connection))
                {
                    try
                    {
                        connection.Open();
                        object obj = cmd.ExecuteScalar();
                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                        {
                            return null;
                        }
                        else
                        {
                            return obj;
                        }
                    }
                    catch (System.Data.SqlClient.SqlException e)
                    {
                        connection.Close();
                        throw new Exception(e.Message);
                    }
                }
            }
        }
        /// <summary>
        /// 执行查询语句,返回SqlDataReader
        /// </summary>
        /// <param name="strSQL">查询语句</param>
        /// <returns>SqlDataReader</returns>
        public static SqlDataReader ExecuteReader(string strSQL)
        {
            SqlConnection connection = new SqlConnection(connectionString);
            SqlCommand cmd = new SqlCommand(strSQL, connection);
            try
            {
                connection.Open();
                SqlDataReader myReader = cmd.ExecuteReader();
                return myReader;
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                throw new Exception(e.Message);
            }

        }
        /// <summary>
        /// 执行查询语句,返回DataSet
        /// </summary>
        /// <param name="SQLString">查询语句</param>
        /// <returns>DataSet</returns>
        public static DataSet Query(string SQLString)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                DataSet ds = new DataSet();
                try
                {
                    connection.Open();
                    SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
                    command.Fill(ds, "ds");
                }
                catch (System.Data.SqlClient.SqlException ex)
                {
                    throw new Exception(ex.Message);
                }
                return ds;
            }
        }
        #endregion
    }
}