C# help ExecuteNonquery

本文关键字:ExecuteNonquery help | 更新日期: 2023-09-27 17:58:17

我真的不知道为什么我会收到这个消息

ExecuteNonQuery:CommandText属性尚未初始化

我的代码中没有任何错误,当我查看它时,它看起来很好。我一直在网上寻找解决方案,但找不到任何解决方案。这是我的密码。非常感谢您的帮助。

SqlConnection conn = new SqlConnection("Data Source=VALONS;Initial Catalog=gym;Integrated Security=True");
    SqlCommand cmd;
    public NewMem()
    {
        InitializeComponent();
    }
    private void label2_Click(object sender, EventArgs e)
    {
    }
    private void NewMem_Load(object sender, EventArgs e)
    {
    }
    private void btnSave_Click(object sender, EventArgs e)
    {
        try
        {
            conn.Open();
            cmd = new SqlCommand("Insert into member(SocialSecurity, Name, City, Street, Zipcode, Email, Phone) values ('" + textSocialSecurity + "','" + textName + "','" + textCity + "','" + textStreet + "','" + textZipCode + "','" + textEmail + "','" + textPhone + "')" + conn);
            cmd.ExecuteNonQuery();
            MessageBox.Show("You have successfully inserted values in Member");
            conn.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

C# help ExecuteNonquery

该问题可能与datataype不匹配有关。由于sql注入问题,请尝试使用参数而不是直接使用值。

cmd = new SqlCommand("Insert into member(SocialSecurity, Name, City, Street, Zipcode, Email, Phone) values (:1,:2,:3,:4,:5,:6,:7)", conn);
cmd.parameters.clear();
cmd.parameters.Add("1", textSocialSecurity);
cmd.parameters.Add("2", textName);
...
cmd.parameters.Add("7", textPhone);
cmd.ExecuteNonQuery();

您可能必须这样做:

cmd.CommandText = @"Insert into member(SocialSecurity, Name, City, Street, Zipcode, Email, Phone) values ('" + textSocialSecurity + "','" + textName + "','" + textCity + "','" + textStreet + "','" + textZipCode + "','" + textEmail + "','" + textPhone + "')";

但是你有严重的问题。而且您对sql注入持开放态度。

参数化查询。

您的命令需要知道它是什么类型。存储过程、命令文本等。我记不清方法了,但这就是问题所在。

我建议您分阶段执行此操作——打开连接,创建一个命令对象并设置连接属性,设置其类型,然后执行SQL文本。我还建议使用带参数的存储过程,因为这是关于SQL注入问题的。