public class news
    {
        SqlDB.SqlDB sqldb = new SqlDB.SqlDB();
       
        private int _id;
        private string _strTitle;
        private string _strContent;        public int id
        {
            get { return _id; }
            set { _id = value; }
        }
        public string strTitle
        {
            get { return _strTitle; }
            set { _strTitle = value; }
        }
        public string strContent
        {
            get { return _strContent; }
            set { _strContent = value; }
        }        public bool add()
        {
            string sql = "insert into t_n_news(strTitle,strContent) values('" + _strTitle + "','" + _strContent + "') ";            
            int n = sqldb.execNon(sql);
            if (n > 0)
            {
                return true;
            }
            return false;
        }
public class news
{
public static void add(string title,string content)
{
        sqldb.sqlExecute(insert into t_n_news(title,content)values('"+title+"','
"+content+"') ); 
}
}

解决方案 »

  1.   

    個人認為第一種比較好,又有人說用下面的方式更好
    public bool add()
            {
                string sql ="insert into t_n_news(strTitle,strContent) values('{0}','{1}')";
                sql=string.Format(sql,_strTitle,_strContent);           
                int n = sqldb.execNon(sql);
                if (n > 0)
                {
                    return true;
                }
                return false;
            }
      

  2.   

    第一个稍好一些
    最好使用SqlParameter
      

  3.   

    不是习惯不习惯的问题,我觉得根据需要而定;
    第一中也是大家通常采用的一种方法,从学编程起,我们就喜欢这样,如果一个类里面没有字段跟属性的话,我们觉得有点不舒服。
    通常情况下:
    如果反复要实例化一个类的话,我们不如采用后者,直接用类调用静态方法,很方便,而且性能也高一点
    如果实例化不多的话,还是建议前者,
    如果一个类有很多字段的时候,最好将业务逻辑,将业务实体分开,定义为两个类,
    一个定义其属性跟字段,也就是实体类了
    一个定义其方法,对这些属性和字段进行操作
    举个里子:
    我们定义一个StudentInfo类里面可以定义一些姓名,年龄,班级等等
    定义一个Student类进行一些增加,删除,和修改操作
      

  4.   

    没一个好的.等着被SQL注入攻击吧.
      

  5.   

    if (n > 0) 
                { 
                    return true; 
                } 
                return false; 
    这里改成return (n > 0);比较好.
      

  6.   


    /// <summary>
            /// 发送Email记录
            /// </summary>
            /// <param name="mode"></param>
            /// <returns></returns>
            public int Add(Model.User_Email mode)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("insert into User_Email(User_Guid,Email_Title,Email_Addressee,Email_Sender,Email_Time,Email_Content,Email_Flag,Email_Status)");
                sb.Append("values(@User_Guid,@Email_Title,@Email_Addressee,@Email_Sender,@Email_Time,@Email_Content,@Email_Flag,@Email_Status)");
                sb.Append(";select @@IDENTITY");
                SqlParameter[] parameter = 
                    {
                        new SqlParameter("@User_Guid",SqlDbType.VarChar,50),
                        new SqlParameter("@Email_Title",SqlDbType.VarChar,50),
                        new SqlParameter("@Email_Addressee",SqlDbType.VarChar,50),
                        new SqlParameter("@Email_Sender",SqlDbType.VarChar,50),
                        new SqlParameter("@Email_Time",SqlDbType.DateTime),
                        new SqlParameter("@Email_Content",SqlDbType.Text),
                        new SqlParameter("@Email_Flag",SqlDbType.Int,4),            
                        new SqlParameter("@Email_Status",SqlDbType.Int,4),
                    };
                parameter[0].Value = mode.User_Guid;
                parameter[1].Value = mode.Email_Title;
                parameter[2].Value = mode.Email_Addressee ;
                parameter[3].Value = mode.Email_Sender;
                parameter[4].Value = mode.Email_Time;
                parameter[5].Value = mode.Email_Content;
                parameter[6].Value = mode.Email_Flag;
                parameter[7].Value = mode.Email_Status;           
                object obj = DbHelperSQL.GetSingle(sb.ToString(), parameter);
                if (obj == null)
                {
                    return 1;
                }
                else
                {
                    return Convert.ToInt32(obj);
                }
            }
      

  7.   

    一个强类型,一个弱类型前一种好一点,
    1.是调用者可以使用ide环境的智能提示完成代码编写,
    2是强类型,在传递参数时候可以规定可以传啥,不可以传啥,比如int id他就只能传数字,而不能是字符了
    3.是这种写法可以在ide环境直接重构成接口,为以后更改保留余地
      

  8.   


    那就不要括号return n>0;
      

  9.   

    1不伦不类...2也就用在极小的项目中...无论如何拼SQL串都不是好习惯...
      

  10.   

    我也用的 这个方法做的,但MS给的C#规范好像是一行代码不能超过100,o(∩_∩)o...哈哈
      

  11.   

    说实的,二种都不是Insus.NET认为好的写法,所以都没有选择,更不用说照抄它们了.
    由于这个类别,是中间层的类别,是作继承父类或是实作接口来处理这个类别的逻辑.
    而不是如同lz一样,去New一个父类来实作.
      

  12.   

    重要的不是形式,而是目的。
    如果是很复杂的系统那么两种都不合适,既然类叫news那么代表它是个实体类,第一种职责分散了,而第二种静态方法显然不适合放在这个类里。