繁体   English   中英

'Name' 附近的语法不正确,并在 cmd.ExecuteNonQuery() 处发出警告

[英]Incorrect Syntax near 'Name' and also give warning at cmd.ExecuteNonQuery()

private void btsSave_Click(object sender, EventArgs e)
{
    try
    {
        string sql = "insert into tblRegistration (Name,Father Name) Values( '" + txtName.Text + "', '" + txtFname.Text + "' )";

        SqlCommand cmd = new SqlCommand(sql, con);

        if (cmd.ExecuteNonQuery() != null)
        {
            MessageBox.Show("Data Saved");

            txtName.Text = "";
            txtFname.Text = "";
            txtName.Focus();
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

避免列名中的空格通常是一个好主意。 我不认为在 SQL Server 中使用带空格的列名周围的单引号是有效的(如果这是您使用的)。 相反,您需要将列名括在方括号中,因此:

insert into tblRegistration(Name, [Father Name])
...

我还建议使用参数化查询来降低 SQL 注入风险: https : //docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.parameters?view=netframework-4.8

您的查询和设置参数如下所示:

// Query text
string sql = "insert into tblRegistration (Name, [Father Name]) values (@Name, @FatherName)";

// After you create your cmd object
cmd.Parameters.AddWithValue("@Name", txtName.Text);
cmd.Parameters.AddWithValue("@FatherName", txtFname.Text);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM