没有弹出窗口和错误源是 rdr=cmd.executereader();

Posted

技术标签:

【中文标题】没有弹出窗口和错误源是 rdr=cmd.executereader();【英文标题】:No popups and error source is rdr=cmd.executereader(); 【发布时间】:2014-01-26 17:07:57 【问题描述】:

这是 OrderDetails 页面,在购物车成功购买后将被带到此页面。 1) 当我让代码运行时,javascript 弹出窗口没有像我的其他页面那样弹出。 2) rdr=cmd.executereader() 是导致错误页面的错误 3) SELECT * OrdersView 是另一个错误。 [我编辑为 SELECT * FROM ordersView] * 新错误 * 4)所有这些代码不再给我任何错误。但是没有弹出窗口,也没有电子邮件发送到该帐户。

我对这个错误的看法:一些分析。我尝试了字符串 StrFirstName 部分 alacartely 和 session["sfirstname"] alacartely 都导致相同的错误。所以我把这两个摘录都贴出来给你看。

我在 c# 中并不是那么好,但我相信这是因为我使用 * 而不是 FROM 检索了数据库,并且还导致我没有正确检索我需要的部分(逻辑错误,我想)任何人都可以在这个问题上指导我?

  using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.OleDb;
    using System.Net.Mail;

    public partial class OrderDetails : System.Web.UI.Page
    

        static readonly string scriptSuccessPaymentSuccessful =
        "<script language=\"javascript\">\n" +
            "alert (\"Your payment is successful!- Thank you!\");\n" +
        "</script>";

        protected void Page_Load(object sender, EventArgs e)
        
            OleDbConnection mDB = new OleDbConnection();
            mDB.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("~/App_Data/webBase.accdb");
            mDB.Open();
            Type csType = this.GetType();
            OleDbCommand cmd;
            OleDbDataReader rdr;
            string SQLRetrieve = "SELECT * FROM ordersView";
            cmd = new OleDbCommand(SQLRetrieve, mDB);
            rdr = cmd.ExecuteReader();

            while (rdr.Read() == true)
            

                

                    string strFirstName = rdr["CFirstName"].ToString();
                    string strLastName = rdr["CLastName"].ToString();
                    string strEmail = rdr["CEmail"].ToString();
                    string strOrderNo = rdr["oOrderNo"].ToString();
                    string strStatus = rdr["oStatus"].ToString();
                    string strPaymentMode = rdr["oPaymentMode"].ToString();
                    string strPrice = rdr["SumOfuUnitPrice"].ToString();

                    if ((string)Session["sFlag"] != "T")
                    

                        ClientScript.RegisterStartupScript(csType, "Success", scriptSuccessPaymentSuccessful);

                        //
                        MailMessage mailMessage = new MailMessage();
                        mailMessage.From = new MailAddress("kayzelmoo@gmail.com");
                        mailMessage.To.Add(strEmail);
                        mailMessage.Subject = "DreamJagers - Successful transaction";

                        mailMessage.Body = "<b>Dear : </b>" + strFirstName + " " + strLastName + "," + "<br/>"
                            + "<b>Order No : </b>" + strOrderNo + "<br/>"
                            + "<b>Payment Mode: </b>" + "You have paid with " + strPaymentMode + "<br/>"
                            + "<b>Amount Paid: </b>" + "$SGD" + strPrice + "<br/>"
                            + "<b>Message : </b>" + "DreamJagers thank you for making the purchase with us, you can present this E-mail to any of us as a proof of receipt purchase";
                        mailMessage.IsBodyhtml = true;

                        SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);
                        smtpClient.EnableSsl = true;
                        smtpClient.Credentials = new System.Net.NetworkCredential("kayzelmoo@gmail.com", "xxxxxxxxx");
                        smtpClient.Send(mailMessage);


                    
                    else
                    

                    
                
            
        
    

【问题讨论】:

【参考方案1】:

开始吧

SELECT * ordersView

应该是

SELECT * FROM ordersView

您的代码不会向 rdr 返回任何内容,因为语法错误。

这很可能是问题所在,但如果这不是答案,您并没有向我们提供我们需要的实际错误。

【讨论】:

wingyip 解决了其中一个错误。接下来的几个错误已解决。我坚持。 “System.Data.dll 中发生了 'System.IndexOutOfRangeException' 类型的异常,但未在用户代码中处理其他信息:uUnitPrice” 从数据库中提取的全部信息是: 字符串 strFirstName = rdr["CFirstName"].ToString();字符串 strLastName = rdr["CLastName"].ToString();字符串 strEmail = rdr["CEmail"].ToString();字符串 strOrderNo = rdr["oOrderNo"].ToString();字符串 strStatus = rdr["oStatus"].ToString();字符串 strPaymentMode = rdr["oPaymentMode"].ToString();字符串 strPrice = rdr["uUnitPrice"].ToString();十进制 decPrice = decimal.Parse(strPrice) 如果我是你,我会发布一个新问题。在评论中遵循代码有点困难 没关系哈哈我解决了整个问题。你解决了更重要的问题——我忽略了 FROM 函数

以上是关于没有弹出窗口和错误源是 rdr=cmd.executereader();的主要内容,如果未能解决你的问题,请参考以下文章

剑道网格未在弹出窗口中显示

“喜欢它”后弹出窗口中的内容错误

EditText.setError(“错误文本”)不显示弹出窗口

简明PR教程

“应用程序不断停止”弹出窗口并给出错误 java.lang.RuntimeException

Sublimelinter - 如何在错误时禁用窗口弹出