Кнопка не может переслать меня на следующую страницу - PullRequest
0 голосов
/ 14 февраля 2011

Ниже приведен код кнопки, но когда я нажимаю кнопку, она не пересылает меня на нужную страницу.

Что-то не так с моей петлей DataReader?

{
    SqlConnection connBadge = new SqlConnection("Data Source =localhost;" +
                       "Initial Catalog = BreastCancer; Integrated Security = SSPI");
    connBadge.Open();

    SqlCommand cmdfBadge = new SqlCommand("SELECT * FROM Products WHERE pid=1", connBadge);
    SqlDataReader dr;

    dr = cmdfBadge.ExecuteReader();

    while (dr.Read())
    {
        String pName = dr["pName"].ToString();
        String pPrice = dr["pPrice"].ToString();

        int b = Convert.ToInt16(pPrice);
        int a = Convert.ToInt16(ddQty1.SelectedValue.ToString());
        int g = a * b;

        String Badge = "INSERT into Cart (Name,Price,Quantity,gPrice) Values('" + pName + "', '" + b + "', '" + a + "','" + g + "')";

        SqlCommand cmdBadge = new SqlCommand(Badge, connBadge);

        cmdBadge.ExecuteNonQuery();
    }

    dr.Close();
    connBadge.Close();

    Response.Redirect("Cart.aspx");        
}

Ответы [ 3 ]

0 голосов
/ 14 февраля 2011

Используйте параметр и попробуйте адаптер sqldata:

{
    SqlConnection connBadge = new SqlConnection("Data Source =localhost;" +
                       "Initial Catalog = BreastCancer; Integrated Security = SSPI");
    connBadge.Open();

    SqlCommand cmdfBadge = new SqlCommand("SELECT * FROM Products WHERE pid='1'", connBadge);

    var dSet = new DataSet();
    var dt = new Datatable();
    var da = new SqlDataAdapter(cmdfBadge);

    da.Fill(dSet);
    dt = dSet.Tables[0];

    foreach(Datarow a in dt.Rows)
    {
        String pName = a["pName"].ToString();
        String pPrice = a["pPrice"].ToString();

        int b = Convert.ToInt16(pPrice);
        int a = Convert.ToInt16(ddQty1.SelectedValue.ToString());
        int g = a * b;

        String Badge = "INSERT into Cart (Name,Price,Quantity,gPrice) Values(@Name,@Price,@Quantity,@gPrice)";

        SqlCommand cmdBadge = new SqlCommand(Badge, connBadge);

        sqlCommand.Addwithvalue("@Name",pName);
        sqlCommand.Addwithvalue("@Price",b)
        sqlCommand.Addwithvalue("@Quantity",a)
        sqlCommand.Addwithvalue("@gPrice",g)
        cmdBadge.ExecuteNonQuery();
    }            

    connBadge.Close();

    Response.Redirect("Cart.aspx");
}

С уважением

0 голосов
/ 14 февраля 2011

Проверьте ваш оператор вставки, я думаю, что он потерпит неудачу, если типы данных вашей цены, количества и цены имеют целочисленный тип:

String Badge = "INSERT into Cart (Name,Price,Quantity,gPrice) Values('" + pName + "', '" + b + "', '" + a + "','" + g + "')";

Не следует заключать их в кавычки, удалять кавычки и пытатьсяснова.

String Badge = "INSERT into Cart (Name,Price,Quantity,gPrice) Values('" + pName + "', " + b + ", " + a + "," + g + ")";

Попробуйте использовать описательные имена переменных, оператор using и оператор try-catch в будущем.

0 голосов
/ 14 февраля 2011

Оберните код оператором try / catch, чтобы увидеть, не генерируются ли какие-либо исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...