gpt4 book ai didi

c# - 'ID' 附近的语法不正确

转载 作者:搜寻专家 更新时间:2023-10-30 23:10:43 25 4
gpt4 key购买 nike

private void btnID_Click(object sender, EventArgs e)
{
//Set Up Conncetion
SqlConnection myconnection = new SqlConnection(global::Database_connection_inForm.Properties.Settings.Default.Database1ConnectionString);
try
{
string sql = "INSERT INTO Students(Student ID,Student Name) values("+txtID.Text+",'"+txtName.Text+"')";
//Command object

SqlCommand exeSql = new SqlCommand(sql, myconnection);
myconnection.Open(); //Opening connection
exeSql.ExecuteNonQuery();

MessageBox.Show("Add new Record Done!","Message",MessageBoxButtons.OK,MessageBoxIcon.Information);
this.studentsTableAdapter.Fill(this.database1DataSet.Students);



}

catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

finally
{
myconnection.Close();
}
}

private void btnRef_Click(object sender, EventArgs e)
{
this.studentsTableAdapter.Fill(this.database1DataSet.Students);
}
}

最佳答案

当列名包含空格时,您应该始终用方括号括起该名称

sql = "INSERT INTO Students([Student ID],[Student Name]) ....." 

也就是说,请删除您的字符串连接并始终使用参数化查询。使用参数而不是字符串连接要好得多。主要是为了避免Sql Injection,但参数方式也将解决引用问题(IE a name = 'O'Brian' 导致在使用string concat时出现语法错误)

private void btnID_Click(object sender, EventArgs e)
{
try
{
string sql = "INSERT INTO Students([Student ID],[Student Name]) " +
"values (@id, @name)";
using(SqlConnection myconnection = new SqlConnection(....))
using(SqlCommand exeSql = new SqlCommand(sql, myconnection))
{
myconnection.Open();
exeSql.Parameters.AddWithValue("@id",Convert.ToInt32(txtID.Text));
exeSql.Parameters.AddWithValue("@name",txtName.Text);
exeSql.ExecuteNonQuery();
}
}
.....

另请注意,我已将 txtID.Text 内容转换为整数,没有进行任何检查。
如果您的用户键入的内容不是有效的数字 ID(并且如果学生 ID 是身份列,则永远不应在 INSERT 语句中传递该值),这可能会失败

作为最后的说明。你真的需要这些列名吗?最好让它们没有空格,否则每次使用此表时都会遇到此问题

关于c# - 'ID' 附近的语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20763877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com