循环插入问题,重新加载页面加载? [英] Loop insert problem, reload page load?

查看:116
本文介绍了循环插入问题,重新加载页面加载?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图实现一个插入语句并在页面加载中使用我的函数返回。不知道如何在同一时间插入我插入到mysql中的所有内容吗?



代码:

  public partial class UserProfileWall:System.Web.UI.Page 
{
protected void Page_Load(object sender,EventArgs e)
{
string theUserId = Session [UserID]。ToString();
using(OdbcConnection cn = new OdbcConnection(Driver = {MySQL ODBC 3.51 Driver}; Server = localhost; Database = gymwebsite2; User = user_name; Password = password_here;))
{
cn.Open();
using(OdbcCommand cmd = new OdbcCommand(SELECT Wallpostings FROM WallPosting WHERE UserID =+ theUserId +ORDER BY idWallPosting DESC,cn))

using(OdbcDataReader reader = cmd.ExecuteReader ())
{
var divHtml = new System.Text.StringBuilder(); (阅读器。阅读())
{
divHtml.Append(< div id = test>);
divHtml.Append(String.Format({0},reader.GetString(0)));
divHtml.Append(< / div>);
}
test1.InnerHtml = divHtml.ToString();



$ b protected void Button1_Click(object sender,EventArgs e)
{
string theUserId = Session [UserID ]的ToString();
OdbcConnection cn = new OdbcConnection(Driver = {MySQL ODBC 3.51 Driver}; Server = localhost; Database = gymwebsite2; User = user_name; Password = password_here;);
cn.Open();

OdbcCommand cmd = new OdbcCommand(INSERT INTO WallPosting(UserID,Wallpostings)VALUES(+ theUserId +,'+ TextBox1.Text +'),cn);
cmd.ExecuteNonQuery();
// {
// using(OdbcCommand md = new OdbcCommand(SELECT Wallpostings FROM WallPosting WHERE UserID =+ theUserId +,cn))

// using (OdbcDataReader reader = cmd.ExecuteReader())
// {
// var divHtml = new System.Text.StringBuilder();
// while(reader.Read())
// {
// divHtml.Append(< div id = test>);
// divHtml.Append(String.Format({0},reader.GetString(0)));
// divHtml.Append(< / div>);
//}
// test1.InnerHtml = divHtml.ToString();
//}
//}
//}
}

我尝试了注释掉的行,但我得到了多个插入,并且没有在页面上重新加载。在插入页面载入函数之后,有没有简单的方法? 首先,移动填充元素的代码与墙上的帖子分开的功能:

pre $ $ code私有无效PopulateWallPosts(字符串userId)
{
使用OdbcConnection cn = new OdbcConnection(Driver = {MySQL ODBC 3.51 Driver}; Server = localhost; Database = gymwebsite2; User = user_name; Password = password_here;))
{
cn.Open();
using(OdbcCommand cmd = new OdbcCommand(SELECT Wallpostings FROM WallPosting WHERE UserID =+ userId)+ORDER BY idWallPosting DESC,cn))
{
using(OdbcDataReader reader = cmd .ExecuteReader())
{
var divHtml = new System.Text.StringBuilder(); (阅读器。阅读())
{
divHtml.Append(< div id = test>);
divHtml.Append(String.Format({0},reader.GetString(0)));
divHtml.Append(< / div>);
}
test1.InnerHtml = divHtml.ToString();






$ b现在在Page_Load中调用它:

  protected void Page_Load(object sender,EventArgs e)
{
string theUserId = Session [UserID]。ToString();
PopulateWallPosts(theUserId);
}

最后在插入新值后调用它:

  protected void Button1_Click(object sender,EventArgs e)
{
string theUserId = Session [UserID]。ToString() ;
using(OdbcConnection cn = new OdbcConnection(Driver = {MySQL ODBC 3.51 Driver}; Server = localhost; Database = gymwebsite2; User = user_name; Password = password_here;))
{
cn.Open();
using(OdbcCommand cmd = new OdbcCommand(INSERT INTO WallPosting(UserID,Wallpostings)VALUES(+ theUserId +,'+ TextBox1.Text +'),cn))
{
cmd.ExecuteNonQuery();
}
}
PopulateWallPosts(theUserId);

$ / code>

您的评论代码无效,因为您执行了 INSERT INTO 命令,而不是SELECT命令。



无论如何,您最好学习SQL注入并更改代码以使用Parameters而不是直接将用户标识添加到SQL字符串中。


Im trying to achieve an insert statment and return using my function in the pageload. Not sure how I can insert at the same time draw what i inserted into mysql back out again all in one go?

Code:

public partial class UserProfileWall : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string theUserId = Session["UserID"].ToString();
        using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=user_name; Password=password_here;"))
        {
            cn.Open();
            using (OdbcCommand cmd = new OdbcCommand("SELECT Wallpostings FROM WallPosting WHERE UserID=" + theUserId + " ORDER BY idWallPosting DESC", cn))

            using (OdbcDataReader reader = cmd.ExecuteReader())
            {
                var divHtml = new System.Text.StringBuilder();
                while (reader.Read())
                {
                    divHtml.Append("<div id=test>");
                    divHtml.Append(String.Format("{0}", reader.GetString(0)));
                    divHtml.Append("</div>");
                }
                test1.InnerHtml = divHtml.ToString();
            }
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        string theUserId = Session["UserID"].ToString();
        OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=user_name; Password=password_here;");
        cn.Open();

        OdbcCommand cmd = new OdbcCommand("INSERT INTO WallPosting (UserID, Wallpostings) VALUES (" + theUserId + ", '" + TextBox1.Text + "')", cn);
        cmd.ExecuteNonQuery();
    //    {
    //        using (OdbcCommand md = new OdbcCommand("SELECT Wallpostings FROM WallPosting WHERE UserID=" + theUserId + "", cn))

    //        using (OdbcDataReader reader = cmd.ExecuteReader())
    //        {
    //            var divHtml = new System.Text.StringBuilder();
    //            while (reader.Read())
    //            {
    //                divHtml.Append("<div id=test>");
    //                divHtml.Append(String.Format("{0}", reader.GetString(0)));
    //                divHtml.Append("</div>");
    //            }
    //            test1.InnerHtml = divHtml.ToString();
    //        }
    //    }
    //}
}

I did try the commented out line but I got multiple inserts and nothing reloaded on the page. Is there a simple way after I insert to get the pageload function?

解决方案

First of all, move the code that populate the element with the wall posts to separate function:

private void PopulateWallPosts(string userId)
{
    using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=user_name; Password=password_here;"))
        {
        cn.Open();
        using (OdbcCommand cmd = new OdbcCommand("SELECT Wallpostings FROM WallPosting WHERE UserID=" + userId) + " ORDER BY idWallPosting DESC", cn))
        {
            using (OdbcDataReader reader = cmd.ExecuteReader())
            {
                var divHtml = new System.Text.StringBuilder();
                while (reader.Read())
                {
                    divHtml.Append("<div id=test>");
                    divHtml.Append(String.Format("{0}", reader.GetString(0)));
                    divHtml.Append("</div>");
                }
                test1.InnerHtml = divHtml.ToString();
            }
        }
    }
}

Now call this in Page_Load:

protected void Page_Load(object sender, EventArgs e)
{
    string theUserId = Session["UserID"].ToString();
    PopulateWallPosts(theUserId);
}

And finally call it after inserting the new value:

protected void Button1_Click(object sender, EventArgs e)
{
    string theUserId = Session["UserID"].ToString();
    using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=user_name; Password=password_here;"))
    {
        cn.Open();
        using (OdbcCommand cmd = new OdbcCommand("INSERT INTO WallPosting (UserID, Wallpostings) VALUES (" + theUserId + ", '" + TextBox1.Text + "')", cn))
        {
            cmd.ExecuteNonQuery();
        }
    }
    PopulateWallPosts(theUserId);
}

Your commented code didn't work because you executed the INSERT INTO command again instead the SELECT command.

Anyway, you really better learn about SQL Injection and change your code to use Parameters instead of directly adding the user ID to the SQL string.

这篇关于循环插入问题,重新加载页面加载?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆