动态 SQL 错误 SQL 错误代码 =-104 令牌未知 - 第 1 行,第 150 列
Dynamic SQL Error SQL Error COde =-104 Token Unknown - line 1, column 150
FbConnection adder = new FbConnection(ClsConnection.FirebirdSQL);
adder.Open();
FbCommand fbcmd = new FbCommand("INSERT INTO
EMPLOYEE(EMPLOYEE_NO,EMPLOYEE_LASTNAME,
EMPLOYEE_FIRSTNAME,EMPLOYEE_MIDDLENAME,
EMPLOYEE_BDATE,EMPLOYEE_STATUS,
EMPLOYEE_POSITION) VALUES(
@textBox1.Text,@textBox2.Text,@textBox3.Text,
@textBox4.Text,@textBox5.Text,@textBox6.Text,
@textBox7.Text)", adder);
// fbcmd.Parameters.AddWithValue(
//FbCommand fbCom = new FbCommand("INSERT INTO players(ID,name,score) VALUES (@id,@name,@score)", fbCon);
//fbCom.Parameters.AddWithValue("id", zID + 1);
//fbCom.Parameters.AddWithValue("name", var);
//fbCom.Parameters.AddWithValue("score", score);
fbcmd.Parameters.Add("textBox1", FbDbType.SmallInt);
fbcmd.Parameters.Add("textBox2", FbDbType.VarChar);
fbcmd.Parameters.Add("textBox3", FbDbType.VarChar);
fbcmd.Parameters.Add("textBox4", FbDbType.VarChar);
fbcmd.Parameters.Add("textBox5", FbDbType.VarChar);
fbcmd.Parameters.Add("textBox6", FbDbType.VarChar);
fbcmd.Parameters.Add("textBox7", FbDbType.VarChar);
fbcmd.ExecuteNonQuery();
fbcmd.Connection.Close();
我可以看到您在根据自己的需要修改某人的示例时犯了三个错误。
也许还有更多,但我不是 C# 的人,无法发现它们。
错误 #1: SQL 术语不包含点。而且我认为参数标识符可以归类为SQL项。
您复制的示例代码:
....VALUES ( @id, @name, @score)"....
您根据此示例制作的代码:
.....VALUES( @textBox1.Text,@textBox2.Text, .....
“@name
”中没有点,但“@textBox2.Text
”中突然有点了
Error #2: for SQL output-parameters 仅指定参数数据类型就足够了,因为值来自数据库。但是对于输入参数,数据类型和值都是必需的。更重要的是,通常您只能提供值,因为数据库库会 "infer" 来自值的数据类型。但是必须为每个使用的输入参数提供该值。
您复制的示例代码:
fbCom.Parameters.AddWithValue("name", var);
您根据此示例制作的代码:
fbcmd.Parameters.Add("textBox2", FbDbType.VarChar);
示例中有值绑定,但是您的代码中突然没有任何值。
错误 #3: 当你在编程中使用一些命名实体时,无论是函数还是变量或参数,你通常通过名称引用它们,通过 标识符。这意味着在您的程序中所有想要使用相同实体的地方 - 名称应该完全相同。
您复制的示例代码:
....VALUES ( @id, @name, @score)"....
fbCom.Parameters.AddWithValue("name", var);
您根据此示例制作的代码:
.....VALUES( @textBox1.Text,@textBox2.Text, .....
fbcmd.Parameters.Add("textBox2", FbDbType.VarChar);
源示例代码在两行中使用相同的标识符 - “name
”标识符。但是您使用不同的名称:一行使用“textBox2.Text'
标识符,而另一行使用“textBox2'
。
为了使您的代码像示例代码一样有效,您必须修正这三个错误:
- 修复 SQL 中的参数名称,使它们成为单项名称。从参数名称中删除 SQL 术语中不允许的点或其他符号。
- 不仅要为参数提供 VALUES 数据类型
- 将值绑定到参数时,使用与 SQL 中完全相同的标识符。
FbConnection adder = new FbConnection(ClsConnection.FirebirdSQL);
adder.Open();
FbCommand fbcmd = new FbCommand("INSERT INTO
EMPLOYEE(EMPLOYEE_NO,EMPLOYEE_LASTNAME,
EMPLOYEE_FIRSTNAME,EMPLOYEE_MIDDLENAME,
EMPLOYEE_BDATE,EMPLOYEE_STATUS,
EMPLOYEE_POSITION) VALUES(
@textBox1.Text,@textBox2.Text,@textBox3.Text,
@textBox4.Text,@textBox5.Text,@textBox6.Text,
@textBox7.Text)", adder);
// fbcmd.Parameters.AddWithValue(
//FbCommand fbCom = new FbCommand("INSERT INTO players(ID,name,score) VALUES (@id,@name,@score)", fbCon);
//fbCom.Parameters.AddWithValue("id", zID + 1);
//fbCom.Parameters.AddWithValue("name", var);
//fbCom.Parameters.AddWithValue("score", score);
fbcmd.Parameters.Add("textBox1", FbDbType.SmallInt);
fbcmd.Parameters.Add("textBox2", FbDbType.VarChar);
fbcmd.Parameters.Add("textBox3", FbDbType.VarChar);
fbcmd.Parameters.Add("textBox4", FbDbType.VarChar);
fbcmd.Parameters.Add("textBox5", FbDbType.VarChar);
fbcmd.Parameters.Add("textBox6", FbDbType.VarChar);
fbcmd.Parameters.Add("textBox7", FbDbType.VarChar);
fbcmd.ExecuteNonQuery();
fbcmd.Connection.Close();
我可以看到您在根据自己的需要修改某人的示例时犯了三个错误。 也许还有更多,但我不是 C# 的人,无法发现它们。
错误 #1: SQL 术语不包含点。而且我认为参数标识符可以归类为SQL项。
您复制的示例代码:
....VALUES ( @id, @name, @score)"....
您根据此示例制作的代码:
.....VALUES( @textBox1.Text,@textBox2.Text, .....
“@name
”中没有点,但“@textBox2.Text
”中突然有点了
Error #2: for SQL output-parameters 仅指定参数数据类型就足够了,因为值来自数据库。但是对于输入参数,数据类型和值都是必需的。更重要的是,通常您只能提供值,因为数据库库会 "infer" 来自值的数据类型。但是必须为每个使用的输入参数提供该值。
您复制的示例代码:
fbCom.Parameters.AddWithValue("name", var);
您根据此示例制作的代码:
fbcmd.Parameters.Add("textBox2", FbDbType.VarChar);
示例中有值绑定,但是您的代码中突然没有任何值。
错误 #3: 当你在编程中使用一些命名实体时,无论是函数还是变量或参数,你通常通过名称引用它们,通过 标识符。这意味着在您的程序中所有想要使用相同实体的地方 - 名称应该完全相同。
您复制的示例代码:
....VALUES ( @id, @name, @score)"....
fbCom.Parameters.AddWithValue("name", var);
您根据此示例制作的代码:
.....VALUES( @textBox1.Text,@textBox2.Text, .....
fbcmd.Parameters.Add("textBox2", FbDbType.VarChar);
源示例代码在两行中使用相同的标识符 - “name
”标识符。但是您使用不同的名称:一行使用“textBox2.Text'
标识符,而另一行使用“textBox2'
。
为了使您的代码像示例代码一样有效,您必须修正这三个错误:
- 修复 SQL 中的参数名称,使它们成为单项名称。从参数名称中删除 SQL 术语中不允许的点或其他符号。
- 不仅要为参数提供 VALUES 数据类型
- 将值绑定到参数时,使用与 SQL 中完全相同的标识符。