c# - C#属性将无法正常工作?

标签 c#

嗨,大家好,我有一个表格...如果用户单击提交按钮,然后设置属性,然后我将调用包含数据库查询的add_data函数...但问题是我在其中设置了属性我的表单在我的add_data函数中将变为空...为什么会发生这种情况?

实际上,我已经尝试在表单中添加一个消息框,该消息框在设置属性值后包含属性中的数据,并且可以正常工作,但是当我将其添加到databasecon类时,该消息框显示为null ...我也尝试将属性和数据库放入查询函数在同一个类中并且正在工作,但是我想要的是将属性和数据库查询函数分开...

这是我属性中的代码

class persons
{
    //person attributes
    private string fname;
    private string lname;
    private string age;
    private string gnder;
    private string address;
    //initialize
    public persons()
    {
        this.fname = "";
        this.lname = "";
        this.age = "";
        this.gnder = "";
        this.address = "";
    }
    //set and get properties
    public string p_fname
    {
        get { return this.fname; }
        set { this.fname = value; }
    }
    public string p_lname
    {
        get { return this.lname; }
        set { this.lname = value; }
    }
    public string p_age
    {
        get { return this.age; }
        set { this.age = value; }
    }
    public string p_gender
    {
        get { return this.gnder; }
        set { this.gnder = value; }
    }
    public string p_address
    {
        get { return this.address; }
        set { this.address = value; }
    }
}


这是我表格中的代码

public partial class add : Form
{
    persons p = new persons();
    databasecon d = new databasecon();
    private void addbtn_Click(object sender, EventArgs e)
    {
        p.p_fname = this.fname.Text;
        p.p_lname = this.lname.Text;
        p.p_age = this.age.Text;
        p.p_gender = this.gender.Text;
        p.p_address = this.address.Text;
        d.add_data();
        this.Close();
    }
}


这是我的数据库连接和查询中的代码

class databasecon
{
    OleDbConnection con = new OleDbConnection();
    persons p = new persons();
    public databasecon()
    {
        con.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=../dbsample.mdb";
    }

    public void add_data()
    {
        try
        {
            con.Open();
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "INSERT INTO person(u_fname,u_lname,u_age,u_gender,u_address)VALUES('" + p.p_fname + "','" + p.p_lname + "','" + p.p_age + "','" + p.p_gender + "','" + p.p_address + "')";
            cmd.Parameters.AddWithValue("u_fname", p.p_fname);
            cmd.Parameters.AddWithValue("u_lname", p.p_lname);
            cmd.Parameters.AddWithValue("u_age", p.p_age);
            cmd.Parameters.AddWithValue("u_gender", p.p_gender);
            cmd.Parameters.AddWithValue("u_address", p.p_address);
            cmd.ExecuteNonQuery();
        }
        catch (Exception e)
        {
            MessageBox.Show("Error : " + e);
        }
        finally
        {
            con.Close();
            MessageBox.Show("New person has been successfully added.");
        }
    }
}

最佳答案

您需要将p作为参数传递给add_data方法。

public void add_data(persons person)


然后使用参数调用它:

d.add_data(p);


并在方法中使用person的属性:

cmd.Parameters.AddWithValue("u_fname", person.p_fname);
cmd.Parameters.AddWithValue("u_lname", person.p_lname);
cmd.Parameters.AddWithValue("u_age", person.p_age);
cmd.Parameters.AddWithValue("u_gender", person.p_gender);
cmd.Parameters.AddWithValue("u_address", person.p_address);

关于c# - C#属性将无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8168076/

相关文章:

c# - 从 Entity Framework 5 升级到 Entity Framework 6(在解决方案中混合和匹配)

c# - 使用 linq 的 EF 对象列表到列表字典

c# - 指定的 key 太长;最大 key 长度为 767 字节 Entity Framework 6 中的 Mysql 错误

c# - 是否有检查对象是否为内置数据类型的函数?

c# - Wpf Datagrid将选定值与值路径绑定(bind)

c# - 使用 C# 在 Blazor 中动态生成圆圈

c# - 如何使用 StreamReader 和 StreamWriter 创建文件副本

c# - 使用一个 DependencyProperty 在 UserControl 中绑定(bind)具有多个属性的模型

c# - Random.Next() 总是返回 0

c# - Linq - 仅当 != null 时获取第二个值