运行代码并输入值 1 后,我的代码行出现 C# 错误,它一直弹出关键字“表”附近的语法不正确
Posted
技术标签:
【中文标题】运行代码并输入值 1 后,我的代码行出现 C# 错误,它一直弹出关键字“表”附近的语法不正确【英文标题】:C# Error of my line of code that it keep pop out Incorrect syntax near the keyword 'Table" after I run the code and inputted a value of 1 【发布时间】:2021-10-04 01:35:30 【问题描述】:namespace WindowsFormsApp4
public partial class Form1 : Form
private const string V = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Simple;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
public Form1()
InitializeComponent();
private void button1_Click(object sender, EventArgs e)
const string ConnectionString = V;
SqlConnection conn1 = new SqlConnection(ConnectionString);
conn1.Open();
SqlCommand cmd1 = new SqlCommand("select Id, First Name, Last Name, sum from Table where id=@id", conn1);
cmd1.Parameters.AddWithValue("Id", textBox1.Text);
SqlDataReader reader1;
reader1 = cmd1.ExecuteReader();
if(reader1.Read())
textBox2.Text = reader1["First Name"].ToString();
textBox2.Text = reader1["Last Name"].ToString();
textBox2.Text = reader1["Sum"].ToString();
else
MessageBox.Show("no data found");
conn1.Close();
【问题讨论】:
Table
是保留字,最好为表选择一个不同的名称。否则,将其括在括号中:[Table]
Sum
也是保留关键字,First Name
和 Last Name
也需要用括号括起来,因为那个空格。
@TimSchmelter SUM
不是 T-SQL 保留关键字,只是 ODBC Reserved Keyword。但实际上,似乎 OP 应该更改除 Id
之外的所有对象的名称。
不要使用addwithvalue
【参考方案1】:
你的列名在数据库中有空格吗?是“First Name”还是“FirstName”(姓氏的问题相同)?
如果是FirstName
和LastName
,那么试试这个(我从First Name
和LastName
中删除了空格,并在sum
和Table
中添加了括号,因为它们是保留字):
SqlCommand cmd1 = new SqlCommand("select Id, FirstName, LastName, [sum] from [Table] where id=@id", conn1);
如果是空格,那么试试这个:
SqlCommand cmd1 = new SqlCommand("select Id, [First Name], [Last Name], [sum] from [Table] where id=@id", conn1);
请注意,为列名使用保留名称不是一个好习惯。我建议您将列名更改为非保留字。
【讨论】:
括号也应该用于列名。无需删除空间 @AkshayGaonkar 是的,通常使用间隔列名不是一个好习惯。由于他没有提到列名是什么,我认为它没有空格,这是他的错误。你怎么知道他在数据库里有什么? (无论如何我都会更新我的答案) @TimSchmelter 阅读我上面的评论 ^^ 当您假设 OP 的问题时,我们没有证据表明列的名称中实际上没有空格,为什么还要假设他们的性别(我们也没有证据)?First Name
和 FirstName
不一样。如果对象名称真的是First Name
,这只会产生一个不同的错误。
为了完整起见,只需在每一列周围加上一个括号。我也不确定SUM
-column 是否会在某处引起争议。您还可以提及更改列名以避免这些问题是个好主意。以上是关于运行代码并输入值 1 后,我的代码行出现 C# 错误,它一直弹出关键字“表”附近的语法不正确的主要内容,如果未能解决你的问题,请参考以下文章