【发布时间】: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的值是多少?