Введите команду с запятой - PullRequest
0 голосов
/ 30 ноября 2018

Я вставляю строку в 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 голосов
/ 30 ноября 2018

Сбой, потому что вы объявили 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...