【问题标题】:C# and Oracle carriage returnC# 和 Oracle 回车
【发布时间】:2015-12-01 02:42:21
【问题描述】:

在插入 oracle 数据库时,我试图让 C# 发生回车,但我似乎无法正确。

我知道它的 CHR(13),但是当我在字符串上运行替换时,它替换了我用来标记回车的特定字符,但是当插入发生时,它带有“CHR(13)”而不是回车。

这是我正在使用的:

txt = txt.Replace("|", "' ||CHAR(13)|| '");

我也尝试过设置一个变量并赋予它 char(13) 的值,但结果相同。

INSERT INTO people (id, first_name, last_name, txt) VALUES ('" + id + "', '" + record.first_name + "', '" + record.last_name + "', '" + txt + "')";

输出:

INSERT INTO people (cust_sid, first_name, last_name, notes) VALUES ('10', 'steve', 'man','thisistext ||CHR(13)|| 07, more:more,  ||CHR(13)')

谁能告诉我我做错了什么。

谢谢,

【问题讨论】:

  • 您能否在执行之前显示更多代码,最好是最终查询?不应该是CHR(13) 而不是CHAR(13)
  • 您正在构建动态查询吗?如果txt作为参数传递,你需要做的就是txt.Replace("|", "\r")
  • 是的,它是 CHR(13),我也尝试过,但 CHAR(13) 在这里出现了不同的帖子,所以我想我也会试一试。 @Luaan txt 作为字符串传递给处理插入语句的类
  • 输出整个 SQL 语句。你应该更喜欢绑定变量。
  • 请使用绑定变量。你不会有这样的问题。

标签: c# oracle


【解决方案1】:

您的问题是最后一个'|'在txt 的末尾。绝对有可能对此进行分类并做你想做的事情,但正如其他人在 cmets 中所说的那样,请不要这样做。

考虑一下,如果您的变量 txt 包含以下内容会怎样:

He'll do just fine

你将如何处理' 字符,更重要的是你真的想要吗?

绑定变量就像培根——它们让一切变得更好:

// OracleConnection conn;

int id = 1;
string txt = "this is text|more:more, |";

OracleCommand cmd = new OracleCommand(
    "insert into people (id, first_name, last_name, txt) values " +
    "(:ID, :FIRST, :LAST, :TXT)", conn);

cmd.Parameters.Add("ID", id);
cmd.Parameters.Add("FIRST", "steve");
cmd.Parameters.Add("LAST", "man");
cmd.Parameters.Add("TXT", txt.Replace("|", Environment.NewLine));

cmd.ExecuteNonQuery();

如果您要插入多条记录,您可能需要稍有不同(声明一次参数,使用不同的值多次执行),但适用相同的基本概念。

【讨论】:

    猜你喜欢
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 2012-08-12
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多