c# Oracle SQL 语句通配符
Posted
技术标签:
【中文标题】c# Oracle SQL 语句通配符【英文标题】:c# Oracle SQL statement wildcard 【发布时间】:2021-05-24 07:08:29 【问题描述】:我正在尝试在 C# 中通过 oracle 使用通配符 (%)。常规 SQL 行可以正常工作,但通配符不返回任何内容。 Oracle DB 中的数据如下所示
A1+52345234 A1+88778686
我已经注释掉了我尝试过的那些不起作用的查询。不知道为什么,因为我可以将 debug 中的行直接复制到 sqlplus 行中,并且工作正常。它只是在 C# 中不起作用
在 Oracle 中使用通配符有什么技巧吗?我不断收到“未返回任何内容”
使用 Oracle.ManagedDataAccess.Client;
OracleConnection con = new OracleConnection();
con.ConnectionString = "User Id=" + login + ";Password=" + password + ";Data Source=localhost/" + dbname;
con.Open();
//string sql = "select my_public_id from patient_public_id where my_public_id like 'A%+%' ";
//string sql = "select my_public_id from patient_public_id where my_public_id like 'A" + (char)37 + "+" + (char)37 + "' ";
//string sql = "select my_public_id from patient_public_id where my_public_id like 'A" + "'%'" + "+" + "'%'" + "' ";
OracleDataAdapter adp = new OracleDataAdapter(sql, con);
DataSet ds = new DataSet();
adp.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
dataGridView1.DataSource = ds.Tables[0];
else
MessageBox.Show("Nothing returned");
【问题讨论】:
我也尝试将“'A%+%'”分配给一个字符串变量并使用它,仍然没有返回任何内容。 第 1 步 - 将 C# 放在一边。打开 Oracle 工具(TOAD 或其他)。让 SQL 在那里工作。一旦你让它工作了,就来这里分享有效的 SQL。在那之前,这不是 C# 问题。 您是否 100% 确定您指向了正确的数据库? 你的 C# 中的select my_public_id from patient_public_id
有效吗?
ds.Tables.Count
的值是多少?
【参考方案1】:
它工作正常,问题是我手动将条目添加到我正在搜索的数据库中,但没有提交它们。哈哈。
【讨论】:
以上是关于c# Oracle SQL 语句通配符的主要内容,如果未能解决你的问题,请参考以下文章
oracle = : := 和变量绑定 oracle通配符和运算符