使用 C# 中的 DbParameter 将数据插入 SQL 服务器
Insert data into SQL Server with a DbParameter in C#
当我尝试将值插入 SQL Server 2008 R2 时,出现错误 [语法错误':']
这是我定义的模型class:
public class Company
{
[DBField("ID"), DBParameter(":ID")]
public double ID { get; set; }
[DBField("CCODE"), DBParameter(":CCODE")]
public string CompanyCode { get; set; }
[DBField("CNAME"), DBParameter(":CNAME")]
public string CompanyName { get; set; }
}
这是我的查询
string sql = @"INSERT INTO TESTDB.SMSGATEWAY_COMPANY(ID,CCODE,CNAME) VALUES (:ID, :CCODE, :CNAME)";
使用存储过程方法赋值后,使用以下执行方法。
public override void ExecuteStiredProcedure(string procedureName, List<StoredProcedureInputParameters> paraList)
{
using (SqlCommand sqCommand = new SqlCommand())
{
sqCommand.Connection = base.DBConnection;
sqCommand.Connection.Open();
sqCommand.CommandType = CommandType.Text;
sqCommand.CommandText = procedureName;
foreach (StoredProcedureInputParameters p in paraList)
{
oracleCommand.Parameters.AddWithValue(p.ParamenterName, p.Value);
}
sqCommand.ExecuteNonQuery();
sqCommand.Connection.Close();
sqCommand.Parameters.Clear();
}
}
执行查询时,出现错误[语法错误':']
请给出解决方案
如错误消息所示,冒号未被识别为有效语法。 TSQL 使用@符号作为变量前缀。
尝试使用查询:
INSERT INTO TESTDB.SMSGATEWAY_COMPANY(ID,CCODE,CNAME) VALUES (@ID, @CCODE, @CNAME)
.. 并确保 StoredProcedureInputParameters
中的参数名称还包含“@”符号作为前缀,而不是冒号。见 example in msdN.
当我尝试将值插入 SQL Server 2008 R2 时,出现错误 [语法错误':']
这是我定义的模型class:
public class Company
{
[DBField("ID"), DBParameter(":ID")]
public double ID { get; set; }
[DBField("CCODE"), DBParameter(":CCODE")]
public string CompanyCode { get; set; }
[DBField("CNAME"), DBParameter(":CNAME")]
public string CompanyName { get; set; }
}
这是我的查询
string sql = @"INSERT INTO TESTDB.SMSGATEWAY_COMPANY(ID,CCODE,CNAME) VALUES (:ID, :CCODE, :CNAME)";
使用存储过程方法赋值后,使用以下执行方法。
public override void ExecuteStiredProcedure(string procedureName, List<StoredProcedureInputParameters> paraList)
{
using (SqlCommand sqCommand = new SqlCommand())
{
sqCommand.Connection = base.DBConnection;
sqCommand.Connection.Open();
sqCommand.CommandType = CommandType.Text;
sqCommand.CommandText = procedureName;
foreach (StoredProcedureInputParameters p in paraList)
{
oracleCommand.Parameters.AddWithValue(p.ParamenterName, p.Value);
}
sqCommand.ExecuteNonQuery();
sqCommand.Connection.Close();
sqCommand.Parameters.Clear();
}
}
执行查询时,出现错误[语法错误':']
请给出解决方案
如错误消息所示,冒号未被识别为有效语法。 TSQL 使用@符号作为变量前缀。
尝试使用查询:
INSERT INTO TESTDB.SMSGATEWAY_COMPANY(ID,CCODE,CNAME) VALUES (@ID, @CCODE, @CNAME)
.. 并确保 StoredProcedureInputParameters
中的参数名称还包含“@”符号作为前缀,而不是冒号。见 example in msdN.