未将数据写入数据库ASP.Net

未将数据写入数据库ASP.Net,asp.net,sql,insert,Asp.net,Sql,Insert,我正在用ASP.Net建立一个论坛,但有一个小问题 我有一个用户,他创建了一个主题,可以很好地写一篇文章,但是如果另一个用户登录,它不会将文章插入数据库。它返回的是它做了什么,但什么也没有插入。原始用户可以登录并仍然发布,但其他人不能 这是我的密码 protected void addPostBtn_Click(object sender, EventArgs e) { //Define ADO.NET objects. string insertSQL;

我正在用ASP.Net建立一个论坛,但有一个小问题

我有一个用户,他创建了一个主题,可以很好地写一篇文章,但是如果另一个用户登录,它不会将文章插入数据库。它返回的是它做了什么,但什么也没有插入。原始用户可以登录并仍然发布,但其他人不能

这是我的密码

    protected void addPostBtn_Click(object sender, EventArgs e)
{        
    //Define ADO.NET objects.
    string insertSQL;
    string topic = Request.QueryString["topicid"].ToString();
    insertSQL = "INSERT INTO Posts (TopicID, PostBody, PUserID)"
        + "VALUES (@Topic, @NewPostText, @PUserID)";

    SqlConnection con = new SqlConnection(connectionString);
    SqlCommand cmd = new SqlCommand(insertSQL, con);

    // Try to open the database and execute the update
    int added = 0;
    try
    {
        cmd.Parameters.AddWithValue("@Topic", topic);
        cmd.Parameters.AddWithValue("@NewPostText", newPostText.InnerText);
        cmd.Parameters.AddWithValue("@PUserID", Session["User_ID"]);
        con.Open();
        added = cmd.ExecuteNonQuery();
        lblResults.Text = "Your post has been added";
    }
    catch (Exception err)
    {
        lblResults.Text = "Error inserting record. " + err.Message;
    }
    finally
    {
        con.Close();
    }
    if (added > 0)
    {
        this.BindRepeater();
    }
}
我一点错误都没有。它说它提交的很好,但是它不在数据库中,除非原始海报这样做

编辑:

刚意识到这与我的观点有关。这是我目前的观点,它是从

    SELECT dbo.Posts.PostBody, dbo.Posts.PostDate, dbo.Posts.PostID, dbo.[User].username, dbo.Topic.TopicID
FROM  dbo.Topic RIGHT OUTER JOIN
dbo.Posts ON dbo.Topic.TopicID = dbo.Posts.TopicID LEFT OUTER JOIN
dbo.[User] ON dbo.Topic.TUserID = dbo.[User].UserID AND dbo.Posts.PUserID = dbo.[User].UserID

但是对于其他用户名,它现在返回空值

视图需要如下

SELECT     dbo.Posts.PostBody, dbo.Posts.PostDate, dbo.Posts.PostID, dbo.[User].username, dbo.Topic.TopicID
FROM         dbo.Topic LEFT OUTER JOIN
                  dbo.Posts ON dbo.Topic.TopicID = dbo.Posts.TopicID LEFT OUTER JOIN
                  dbo.[User] ON dbo.Posts.PUserID = dbo.[User].UserID

您的Posts表是什么样子的?这与主题创建者在创建帖子时使用的代码相同吗?@peroija请参阅editokay,您打算如何处理此视图?为什么右外连接要开始,而不是左外连接?我从3个表中提取。刚发现是用户加入的。见下面的答案