我目前正在尝试使用Unity3D将SQL实施到项目中。到目前为止,我已经能够执行“常规”的UPDATE,ADD,DELETE,DROP,ALTER,INSERT”。
尝试进一步,我尝试使用此链接作为guide
插入准备好的语句这是我的代码:
a
我的桌子看起来像这样:
b
我收到此错误:
SQLException:'1'附近的系统税不正确。
System.Data.SqlClient.SqlConnection.ErrorHandler(System.Object发送者,Mono.Data.Tds.Protocol.TdsInternalErrorMessageEventArgs e)
请帮助?提前谢谢您。.我找不到我做错了什么地方。
答案 0 :(得分:2)
您可以在不损失功能的情况下进行大量减少,甚至可以进行一些重要的改进(例如,即使抛出异常也可以关闭连接):
using (var sqlConnection = new SqlConnection(Connection.connectionString))
using (var cmd = new SqlCommand("INSERT INTO IngredientTypes (Name) VALUES (@name)", sqlConnection))
{
cmd.Parameters.Add("@name", SqlDbType.VarChar, 155).Value = Name;
sqlConnection.Open();
cmd.ExecuteNonQuery();
}
不过,我不确定是什么导致了您现有代码中的异常,因为在该查询的任何地方都没有使用1
。我怀疑,该问题与SqlDbType.Text
有关,因为不是与VarChar
列配合使用的正确类型,但似乎就像我们尚未看到的某个地方的代码正在更改您的SQL命令文本一样。
肯定地,链接中的Prepare()
方法对于Sql Server来说是不需要的。它是从DbCommand
那里继承而来的,因为它是API的重要组成部分,所以被包含在其中其他一些数据库,但是Sql Server已经自动处理此问题已有10多年了。
答案 1 :(得分:1)
SqlDbType.Text与varchar不同。我不相信您指定的文本类型的长度。
答案 2 :(得分:0)
您可以尝试以下吗?顺便说一下,对于SQL连接,使用“使用”结构更安全,当过程完成后,连接会自动关闭。
using (SqlConnection sqlConnection = new SqlConnection(Connection.connectionString))
{
SqlCommand command = new SqlCommand("INSERT INTO IngredientTypes (Name) VALUES (@name)", connection);
command.Parameters.Add("@name", SqlDbType.Varchar, 155);
command.Parameters["@name"].Value = Name; //make sure Name is string.
try
{
sqlConnection.Open();
command.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
答案 3 :(得分:0)
我完全按原样尝试了您的代码,但没有发现问题。尽管几乎没有编译错误(缺少;在第1行中,名称变量应该作为参数出现),但是我相信您知道这一点。如果您发布的表结构和代码与项目中的代码完全相同,则此代码没有问题。