【问题标题】:Retrieve the model and price of the car by using parameters使用参数检索汽车的型号和价格
【发布时间】:2019-04-19 15:31:52
【问题描述】:
using System;
using System.Data.SqlClient;

namespace car_database
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        public class car
        {
            string connstring = "Data Source=.\\SqlExpress; Initial Catalog=carsale; Integrated Security=True";

            protected BtnView(object sender, EventArgs e)
            {
                SqlConnection myConnection = new SqlConnection(connstring);

                try
                {
                    myConnection.Open();
                    string query = "select model ,price from car where Id =@carid";

                    SqlCommand mycmd = new SqlCommand(query, myConnection);

                    int carid1;

                    if (!int.TryParse(TextBox1.Text, out carid1))
                    { 
                         Label1.Text = "please enter a numeric ID!";
                    }
                    else
                    {
                        mycmd.Parameters.Add("@carid", System.Data.SqlDbType.Int);
                        mycmd.Parameters["@carid"].Value = carid1;

                        SqlDataReader reader = mycmd.ExecuteReader();

                        if (reader.Read())
                        {
                            Label1.Text = "Model:" + reader["model"] + "<br/>" + "price:" + (string)reader["price"];
                        }
                        else
                        {
                            Label1.Text = "no car has this id ";
                        }

                        reader.Close();
                    }
                }
                catch (Exception ex)
                {
                    Label1.ForeColor = System.Drawing.Color.Red;
                    Label1.Text = ex.Message;
                }
                finally
                {
                    myConnection.Close();
                }
            }
        }
    }
}

我想根据TextBox1中输入的Id,在点击按钮时在Label1中显示车型和价格。

aspx 标记:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="car_database.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
enter id to retrieve the model and the price of the car :
<asp:TextBox runat="server" ID="TextBox1" />

            <br />
            <asp:Button runat="server" ID="btn" OnClick ="BtnView" />
            <br />
            <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
        </div>
    </form>
</body>
</html>

但代码不起作用 - 我收到一些错误:

公车必须有返回类型

TextBox1.Text 和 Label1.Text 有错误:

非静态字段方法或属性需要对象引用

【问题讨论】:

标签: c# asp.net sql-server visual-studio express


【解决方案1】:

我看到了几个错误

protected BtnView(object sender, EventArgs e)
{

应该是

protected Void BtnView(object sender, EventArgs e) 
{
   ....
}

另外,Label1.Text = "please enter a numeric ID!"; 应该是 this.Label1.Text = "please enter a numeric ID!"; 考虑到 Label1 是标签控件实例名称

【讨论】:

  • 第二个错误依然存在:非静态字段方法或属性需要对象引用
  • @ReemAbdulaziz 这是Label1.Text = "" 的原因,正如所有参考的答案中所建议的那样进行了更改
【解决方案2】:

移除类public class car,代码必须在WebForm1类中才能访问其控件。

试试这样:

using System;
using System.Data.SqlClient;


namespace car_database
{
    public partial class WebForm1 : System.Web.UI.Page
    {



            string connstring = "Data Source=.\\SqlExpress; Initial Catalog=carsale; Integrated Security=True";

            protected BtnView(object sender, EventArgs e)
            {
                SqlConnection myConnection = new SqlConnection(connstring);
                try
                {
                    myConnection.Open();
                    string query = "select model ,price from car where Id =@carid";

                    SqlCommand mycmd = new SqlCommand(query, myConnection);

                    int carid1;

                    if (!int.TryParse(TextBox1.Text, out carid1))
                    { Label1.Text = "please enter a numerac ID!"; }

                    else
                    {
                        mycmd.Parameters.Add("@carid", System.Data.SqlDbType.Int);
                        mycmd.Parameters["@carid"].Value = carid1;

                        SqlDataReader reader = mycmd.ExecuteReader();

                        if (reader.Read())
                        {
                            Label1.Text = "Model:" + reader["model"] + "<br/>" + "price:" + (string)reader["price"];

                        }

                        else
                        {
                            Label1.Text = "no car has this id ";

                        }

                        reader.Close();
                    }

                }
                catch (Exception ex)
                {
                    Label1.ForeColor = System.Drawing.Color.Red;
                    Label1.Text = ex.Message;

                }
                finally
                {

                    myConnection.Close();

                }

            }

    }
}

【讨论】:

    猜你喜欢
    • 2018-10-07
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 2018-09-14
    • 2021-02-26
    • 1970-01-01
    相关资源
    最近更新 更多