【问题标题】:Collect data from table and pass it through link as query string从表中收集数据并通过链接作为查询字符串传递
【发布时间】:2016-04-06 11:00:27
【问题描述】:

在“广告”表中,这些信息将被存储到下面的控制器中,该表有“AdsID”列,它会自动生成每行的编号。所以我正在寻找的是在表格中插入信息表单控制器后,获取单击按钮时刚刚创建的行号,并通过 EditAds.aspx 传递行号“AdsID”和“AdsTit”

protected void adNewQdadsbtn_Click(object sender, EventArgs e)
    {
       SqlConnection cn = new SqlConnection(sc);

                if (RegInteFileUploadImg1.HasFile || RegInteFileUploadImg2.HasFile || RegInteFileUploadImg3.HasFile || RegInteFileUploadImg4.HasFile || RegInteFileUploadImg5.HasFile)
                {


                    var files = new[] { FileExtentio, FileExtentio2, FileExtentio3, FileExtentio4, FileExtentio5 };
                    files = files.Where(s => !string.IsNullOrEmpty(s)).ToArray();
                    var extensions = new[] { ".jpg", ".png" };
                    if ((files.Except(extensions).Count()) <= 0)
                    {
                        if (RegDropDownList3.SelectedValue == "no")
                        {
                            AdsWrngPanel.Visible = true;
                            adsstutslbel.Text = "- Please select ads status";
                        }
                        else
                        {

                        }


                        if (DropDownList11.SelectedValue == "no")
                        {
                            AdsWrngPanel.Visible = true;
                            adscondlbel.Text = "- Please select ads condition";
                        }


                        string sqlstatment = @"INSERT INTO ads (Section, Category, AdsTit, AdsDesc, Country, State,AdsDate,City, AdsPrice, Img1, img2, img3, img4,img5, Wtags, QAdsTeleNum,Condition, Status,Maker,Year,Gear,RoomNo, Space,Shower,Garage,Currency,extlink,AdType,approvAds,QAdsEmail)
        VALUES (@Section, @Category, @AdsTit, @AdsDesc, @Country, @State,@adsDate, @City, @AdsPrice, @Img1, @img2, @img3,
        @img4, @img5, @Wtags, @QAdsTeleNum,@Condition, @Status,@Maker,@Year,@Gear,@RoomNo,@Space,@Shower,@Garage,@Currency, @extlink,@AdType,@approvAds,@QAdsEmail)";

                        SqlCommand cmd = new SqlCommand(sqlstatment, cn);


                        String shw = "Y";
                        cmd.Parameters.AddWithValue("@Section", RegSecdrdoads.SelectedItem.Text);
                        cmd.Parameters.AddWithValue("@Maker", makervalue);
                        cmd.Parameters.AddWithValue("@Year", Yearvalue);
                        cmd.Parameters.AddWithValue("@Gear", Gearvalue);
                        cmd.Parameters.AddWithValue("@RoomNo", RoomNum);
                        cmd.Parameters.AddWithValue("@Space", areasize);
                        cmd.Parameters.AddWithValue("@Category", RegCatedrdoads.SelectedItem.Text);
                        cmd.Parameters.AddWithValue("@AdsTit", addadstittxtbx.Text);
                        cmd.Parameters.AddWithValue("@AdsDesc", NyAdsDesc);
                        cmd.Parameters.AddWithValue("@Country", cookie.Value);


                        string imgnouser = "/images/general/nouser.jpg";

                        if (RegInteFileUploadImg1.HasFile)
                        {
                            cmd.Parameters.AddWithValue("@Img1", RegInteFileUploadImg1.FileName);
                            RegInteFileUploadImg1.SaveAs(Server.MapPath("~/images/AdsImgs/" + RegInteFileUploadImg1.FileName));
                        }
                        else
                        {
                            cmd.Parameters.AddWithValue("@Img1", imgnouser);
                        }


                        if (RegInteFileUploadImg2.HasFile)
                        {
                            cmd.Parameters.AddWithValue("@Img2", RegInteFileUploadImg2.FileName);
                            RegInteFileUploadImg2.SaveAs(Server.MapPath("~/images/AdsImgs/" + RegInteFileUploadImg2.FileName));
                        }
                        else
                        {
                            cmd.Parameters.AddWithValue("@Img2", imgnouser);
                        }

                        cn.Open();
                        cmd.ExecuteNonQuery();
                        Response.Redirect("User panel.aspx");

                    }

                    else
                    {
                        AddNwAddsWrngFrmtLbl.Text = "Error: The file should have .png or .jpg format only";
                        AddNwAddsWrngFrmtLbl.ForeColor = System.Drawing.Color.Red;

                        return;
                    }

                }

                else
                {
                    string sqlstatment2 = @"INSERT INTO ads (Section, Category, AdsTit, AdsDesc, Country, State,AdsDate,City, AdsPrice, Wtags, QAdsTeleNum,Condition, Status,Maker,Year,Gear,RoomNo, Space,Shower,Garage,extlink,AdType,approvAds,QAdsEmail) VALUES (@Section, @Category, @AdsTit, @AdsDesc, @Country, @State,@adsDate, @City, @AdsPrice, @Wtags, @QAdsTeleNum,@Condition, @Status,@Maker,@Year,@Gear,@RoomNo,@Space,@Shower,@Garage, @extlink,@AdType,@approvAds,@QAdsEmail)";


                    SqlCommand cmd = new SqlCommand(sqlstatment2, cn);

                    String SHO = "Y";
                    cmd.Parameters.AddWithValue("@Section", RegSecdrdoads.SelectedItem.Text);
                    cmd.Parameters.AddWithValue("@Maker", makervalue);
                    cmd.Parameters.AddWithValue("@Year", Yearvalue);
                    cmd.Parameters.AddWithValue("@Gear", Gearvalue);
                    cmd.Parameters.AddWithValue("@RoomNo", RoomNum);
                    cmd.Parameters.AddWithValue("@Space", areasize);
                    cmd.Parameters.AddWithValue("@Category", RegCatedrdoads.SelectedItem.Text);
                    cmd.Parameters.AddWithValue("@AdsTit", addadstittxtbx.Text);
                    cmd.Parameters.AddWithValue("@AdsDesc", NyAdsDesc);
                    cmd.Parameters.AddWithValue("@adsDate", DateTime.Now);
                    cmd.Parameters.AddWithValue("@Currency", AddAdsCurencyLBL.Text);
                    cmd.Parameters.AddWithValue("@extlink", extlinktxtbox.Text);
                    cmd.Parameters.AddWithValue("@AdType", QUAD);
                    cmd.Parameters.AddWithValue("@approvAds", AdsAprov);
                    cmd.Parameters.AddWithValue("@QAdsEmail", QuickAdsEmailTxtBox.Text);


                    cn.Open();
                    cmd.ExecuteNonQuery();

                }

                string QAdsID = string.Empty;
                string QADSTit = string.Empty;


                using (SqlCommand SendMailcmd = new SqlCommand("SELECT AdsID FROM ads WHERE QAdsEmail = @QAdsEmail AND AdsTit=@AdsTit OR QAdsTeleNum=@QAdsTeleNum"))
                {
                    SendMailcmd.Parameters.AddWithValue("@AdsTit", addadstittxtbx.Text.Trim());
                    SendMailcmd.Parameters.AddWithValue("@QAdsEmail", QuickAdsEmailTxtBox.Text.Trim());
                    SendMailcmd.Parameters.AddWithValue("@QAdsTeleNum", QuickAdsMobNumTxtBox.Text.Trim());
                    SendMailcmd.Connection = cn;

                    using (SqlDataReader sdr = SendMailcmd.ExecuteReader())
                    {
                        if (sdr.Read())
                        {
                            QAdsID = sdr["AdsID"].ToString();
                            QADSTit = sdr["AdsTit"].ToString();
                        }
                    }
                    cn.Close();
                }

                Response.Redirect("EditAds.aspx?Name=" + this.addadstittxtbx.Text );


    }

【问题讨论】:

  • 如果反对票附有解释,这将对 Simon 有所帮助。西蒙我认为这是因为你的问题很难阅读/理解。你能简化你的问题吗?您可以减少发布的代码示例以仅包含相关行吗?
  • @destination-data 感谢您的回复,我已经更新了帖子,希望能更清楚地解释

标签: c# sql-server query-string


【解决方案1】:

如果我正确理解了您的问题,您是否正在尝试将插入行的 ID 返回给您的应用程序?

如果是这样,请考虑以下事项。由于您似乎正在插入单行,并且假设您使用的是 SqlServer 2005 或更高版本,所以它相当简单。

您可以将OUTPUT clause 与您的插入语句一起使用,并立即返回每一行的ID。如果你像

这样构建你的查询
INSERT INTO table (<column>)
    OUTPUT inserted.<column>
    VALUES (<@parameter>) 

您可以简单地使用cmd.ExecuteScalar()cmd.ExecuteReader() 来获取新插入的ID。

/edit:尝试在您的代码中实现它(省略 ParameterValues,因为它保持不变)

// initialization stuff left out because it stays the same [...]
string sqlstatment = @"INSERT INTO ads (Section, Category, AdsTit, AdsDesc, Country, State,AdsDate,City, AdsPrice, Img1, img2, img3, img4,img5, Wtags, QAdsTeleNum,Condition, Status,Maker,Year,Gear,RoomNo, Space,Shower,Garage,Currency,extlink,AdType,approvAds,QAdsEmail) 
    OUTPUT inserted.AdsID        
    VALUES (@Section, @Category, @AdsTit, @AdsDesc, @Country, @State,@adsDate, @City, @AdsPrice, @Img1, @img2, @img3,
    @img4, @img5, @Wtags, @QAdsTeleNum,@Condition, @Status,@Maker,@Year,@Gear,@RoomNo,@Space,@Shower,@Garage,@Currency, @extlink,@AdType,@approvAds,@QAdsEmail)";
// ommitting parameter stuff [...]

cn.Open();
string QAdsID = cmd.ExecuteScalar() as string; // cast or convert the proper data type here...

您当然可以输出多个插入的值,但您需要 DataReaderDataAdapter 而不是 ExecuteScalar()

【讨论】:

  • 感谢您的回复,但可以通过更新我的代码来解释它,然后我可以准确理解它的工作原理,因为我对您在我的代码中提到的如何做有点困惑
  • 谢谢,但我尝试过你提到的字符串 QAdsID 行之后...我添加了“ Response.Redirect("EditAds.aspx?AdTit=" + this.addadstittxtbx.Text + "&AdNum =" + QAdsID); " 但它没有得到 AdsID 值,因为它看起来像这样的链接:berava.com/EditAds.aspx?AdTit=test&AdNum=
猜你喜欢
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
相关资源
最近更新 更多