C# 从WebApi到sql数据库的数据

C# 从WebApi到sql数据库的数据,c#,sql,C#,Sql,我从WebApi获取发票,并将这些发票插入到SQL表中。 我用C#来做这个操作。 我使用System.Data.SqlClient生成此SQL查询: string sql = String.Format("insert into [dbo].[InvoiceHeader] values('{0}','{1}','{2}','{3}')", inv.logNo, inv.locationCode, inv.invSeq,inv.reference); command = ne

我从WebApi获取发票,并将这些发票插入到SQL表中。 我用C#来做这个操作。 我使用System.Data.SqlClient生成此SQL查询:

string sql = String.Format("insert into [dbo].[InvoiceHeader] values('{0}','{1}','{2}','{3}')", inv.logNo, inv.locationCode, inv.invSeq,inv.reference);

command = new SqlCommand(sql, cnn);

adapter.InsertCommand.ExecuteNonQuery();

问题是其中一张发票有一个inv.reference=“Box 20”Cont”,这是InsertCommand的问题。当变量包含“in the text”时,如何将文本插入sql数据库?

您应该切换到使用参数。这将使您的代码更安全,并且您的问题所涉及的情况将很容易解决:

SqlCommand cmd = new SqlCommand(
    "insert into [dbo].[InvoiceHeader] values (@logoNo,@locationCode,@ref)", conn);

SqlParameter param1  = new SqlParameter();
param.ParameterName = "@logoNo";
param.Value         = inv.logNo;

SqlParameter param2  = new SqlParameter();
param.ParameterName = "@locationCode";
param.Value         = inv.locationCode;

SqlParameter param3  = new SqlParameter();
param.ParameterName = "@ref";
param.Value         = inv.invSeq,inv.reference;

cmd.Parameters.Add(param1);
cmd.Parameters.Add(param2);
cmd.Parameters.Add(param3);
所有必要的引用和针对SQL注入的保护都将得到处理。您仍然需要处理异常和常规错误。

这其实很容易

我就是这样做的

库存参考替换(“”,“”)


我试着用这种方法,但我遇到了一个错误。当其中一个参数为Null时,我该怎么办?这取决于表/列定义。如果列不允许NULL,则参数不能为NULL。你以前的方法肯定遇到了同样的问题。我对答案进行了编辑,以便更清楚地说明如何处理它。以前是否已将参数添加到命令中?