【问题标题】:Insert command with comma用逗号插入命令
【发布时间】:2018-11-30 14:43:45
【问题描述】:

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

【问题讨论】:

  • 还可以了解prepared Statements:stackoverflow.com/questions/11070434/…
  • @Jens:嗯,参数化查询比预准备语句更多。但是,是的,避免将值直接放在 SQL 中是前进的方向。
  • 还可以了解SQL Injection
  • @Jens - 在公司名称中使用逗号并非试图存储 CSV 的正当理由,许多公司在“Inc.”之前都有一个逗号。或其他。
  • @Jens, before inc,如 'Monsters, Inc.'

标签: c# sql oracle


【解决方案1】:

它失败了,因为您已将 '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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2013-12-01
    • 2021-03-13
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    相关资源
    最近更新 更多