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