用逗号插入命令

时间:2018-11-30 14:43:45

标签: c# sql oracle

我正在Oracle中插入一行。但是问题是我想在公司名称列中插入逗号,由于插入语句而导致逗号失败。

使用以下插入命令是否可以添加逗号或撇号?

string id=1;
string orgnr = "123123";
comanyname = "Test,company";

string sql = 
  string.Format("INSERT INTO VENDORS(ID, ORGNR, COMPANYNAME) " +
  "VALUES({0}, '{1}', '{2}')", id, orgnr, companyname);

update = new OracleCommand(sql, connection);
update.Connection.Open();
update.ExecuteNonQuery();
update.Connection.Close();

1 个答案:

答案 0 :(得分:2)

失败,因为您已将'id'声明为字符串,并且试图插入不带单引号的字符串。字符串参数中也有非法字符要转义。您想摆脱这些吗?请继续阅读...

您的代码中存在一个更大的问题,您没有使用参数化查询。这段代码将主机应用程序转变为SQL Injection游乐场。

请查看以下代码:

int id=1;
string orgnr = "123123";
string companyName = "Test,company";

string connectionString = "Data Source= oraDB;User Id=;Password=;";
OracleConnection connection = new OracleConnection(connectionString);
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = connection;

cmd.CommandText = "INSERT INTO VENDORS(ID, ORGNR, COMPANYNAME) VALUES (:1, :2, :3)";

cmd.Parameters.Add(new OracleParameter("1",
                                       OracleDbType.Int32,
                                       id,
                                       ParameterDirection.Input));

cmd.Parameters.Add(new OracleParameter("2",
                                       OracleDbType.Varchar2,
                                       orgnr,
                                       ParameterDirection.Input));

cmd.Parameters.Add(new OracleParameter("3",
                                       OracleDbType.Varchar2,
                                       companyName,
                                       ParameterDirection.Input));

int rowsUpdated = cmd.ExecuteNonQuery();
connection.Dispose();