首页 > 解决方案 > 用逗号插入命令

问题描述

我在 Oracle 中插入一行。但问题是我想在 companyname 列中插入逗号,由于插入语句而失败。

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

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();

标签: c#sqloracle

解决方案


它失败了,因为您已将 'id' 声明为字符串,并且您一直试图在没有单引号的情况下插入它。字符串参数中还有要转义的非法字符。你想摆脱这些吗?请继续阅读...

您的代码中存在一个更大的问题,即您没有使用参数化查询。这段代码将宿主应用程序变成了一个 SQL 注入游乐场。

请看下面的代码:

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();

推荐阅读