2011.10.20学习随记

来源:互联网 发布:中国 朝鲜 知乎 编辑:程序博客网 时间:2024/05/16 05:46

      今天换一种方法来存入用户信息 利用存储过程来实现对数据库里的增加用户用的信息,自己在在写存储过程这方面还存在很大的漏洞,以后应该抓紧拾起来,

只做了一个简易的留言板,从网上Down到的CKEditor控件可以在文本框中实现简单的文字处理,依然用到前面建好的对数据库进行操作的类,下面附上这段代码:

 protected void Page_Load(object sender, EventArgs e)
    {

        LoadTable();
    
    }

    private void LoadTable()
    {
        string sql = ConfigurationManager.ConnectionStrings["sqlcnn"].ConnectionString;
        using (SqlConnection sqlcon = new SqlConnection(sql))
        {

            SqlCommand sqlcom = new SqlCommand();
            sqlcom.CommandText = "select id,time,content from BBS";
            sqlcom.Connection = sqlcon;
            sqlcon.Open();
            Table table = new Table();
            TableRow row = new TableRow();
            TableCell cell = new TableCell();
            SqlDataReader read = sqlcom.ExecuteReader();
            while (read.Read())
            {
                row = new TableRow();
                cell = new TableCell();
                cell.Text = "第" + read["id"].ToString() + "条" + "<br/>" + "留言时间:" + read["time"].ToString();
                row.Cells.Add(cell);
                table.Rows.Add(row);
                row = new TableRow();
                cell = new TableCell();
                cell.Text = read["content"].ToString();
                row.Cells.Add(cell);
                table.Rows.Add(row);

                row = new TableRow();
                cell = new TableCell();
                HyperLink btn = new HyperLink();
                btn.Text = "删除";
                btn.NavigateUrl = "delete.aspx?del=" + read["id"].ToString();
                cell.Controls.Add(btn);
                row.Cells.Add(cell);
                table.Rows .Add(row);
                
            }
            this.tables.Controls.Add(table);
            read.Close();
        }

    }

   

  
 
    protected void Button1_Click(object sender, EventArgs e)
    {
        string str = "insert into BBS ([content]) values (@content)";
       int i = SqlHelper.ExecuteNonQuery(str,new SqlParameter ("@content",CKEditorControl1 .Text));

       if (i == 1)
       {
           this.Response.Write("留言成功!");
           this.CKEditorControl1.Text = " ";
       }
       else
       { Response.Write("网络故障!"); }
       LoadTable();
    }

在留言中还可以实现删除功能,是利用另一个空白页面来实现的,

目前这个留言是比较简单的,没有用户的区别,只是简单的从数据库里调用数据,显示在页面上,日后来完善这个程序!

最后再附上用到的SqlHelper的类:

public class SqlHelper
{
    public SqlHelper()
 {
  //
  //TODO: 在此处添加构造函数逻辑
  //
 }
    public static readonly string str = ConfigurationManager.ConnectionStrings["sqlcnn"].ConnectionString;

下面这个方法,是用来获取结果集的第一行第一列的结果

    public static object ExecuteScalar(string sqlText, params SqlParameter[] paramss)
    {
        using (SqlConnection sqlcon = new SqlConnection(str))
        {
            using (SqlCommand sqlcom = sqlcon.CreateCommand())
            {
                sqlcom.CommandText = sqlText;
                fillParameter(paramss, sqlcom);
                sqlcon.Open();
                return sqlcom.ExecuteScalar();
            }
        }
    }

//填充Command对象的参数列表

    private static void fillParameter(SqlParameter[] paramss, SqlCommand sqlcom)
    {
        foreach (SqlParameter param in paramss)
        {
            sqlcom.Parameters.Add(param);
        }
    }

    /// 获取检索结果集,返回DataTable
    public static DataTable ExecuteTable(string sqlText, params SqlParameter[] paramss)
    {
        using (SqlConnection sqlcon = new SqlConnection(str))
        {
            using (SqlCommand sqlcom = sqlcon.CreateCommand())
            {
                sqlcom.CommandText = sqlText;
                fillParameter(paramss, sqlcom);
                sqlcon.Open();
                using (SqlDataReader reader = sqlcom.ExecuteReader())
                {
                    DataTable dt = new DataTable();
                    dt.Load(reader);
                    return dt;
                }
            }
        }
    }

    /// 执行对数据库的增、删、改操作,并返回数据库中受影响的行数
    public static int ExecuteNonQuery(string sqlText, params SqlParameter[] paramss)
    {
        using (SqlConnection sqlcon = new SqlConnection(str))
        {
            using (SqlCommand sqlcom = sqlcon.CreateCommand())
            {
                sqlcom.CommandText = sqlText;
                fillParameter(paramss, sqlcom);
                sqlcon.Open();
                return sqlcom.ExecuteNonQuery();
            }
        }
    }
}

在这个类里可以实现对数据库的大部分操作了!对于要打很多重复的代码的工程来说,这是一个很好的工具。