oracle ODP.NET에서 C#을 사용하여 테이블을 쿼리했습니다. 필드 값에 "%"기호가 있으면 이상한 동작이있는 것 같습니다. 다음과 같은 예를 들어 :Oracle ODP.NET에는 쿼리에서 백분율 기호를 다루는 버그가 있습니까?
오라클 (11g 또는 12C) 나는 간단한 창에
CREATE TABLE "TESTCHAR" ("NAME" VARCHAR2(255 BYTE) NOT NULL ENABLE, "RESULT" VARCHAR2(4000 BYTE));
COMMIT;
INSERT INTO TESTCHAR (NAME, RESULT) VALUES ('Test 1 % Area','10');
INSERT INTO TESTCHAR (NAME, RESULT) VALUES ('Test 2 % Area','10');
INSERT INTO TESTCHAR (NAME, RESULT) VALUES ('Test 3 % Area','10');
INSERT INTO TESTCHAR (NAME, RESULT) VALUES ('Test 4 % Area','10');
INSERT INTO TESTCHAR (NAME, RESULT) VALUES ('Test 5 % Area','10');
INSERT INTO TESTCHAR (NAME, RESULT) VALUES ('Test 6 % Area','10');
COMMIT;
이제 기호 %에 값을 삽입하는 테스트 테이블을 만들려면 다음 명령을 실행 Visual Studio에서 응용 프로그램을 형태로 (2012 년과 2015 년 사용) 다음 앱을 만들었습니다 :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OracleConnection conn = new OracleConnection("User Id=myUser;Password=myPass;Data Source=myData");
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from testchar";
cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
dr.Read();
DataTable dt = new DataTable();
dt.Load(dr);
dataGridView1.DataSource = dt;
}
}
}
DataGrid에서는 단지 5 개의 행만 표시됩니다. 그러나 SQL Developer로 직접 이동하여 동일한 쿼리를 사용하면 모든 행이 반환됩니다. 나는 이미 관리되고 관리되지 않는 odp.net을 시도했다. 그것은 오라클 공급자의 나쁜 해석 인 것 같습니다.
System.Data.OleDb를 사용하는 경우이 문제는 발생하지 않지만 Clob 형식을 처리 할 때 사용할 수 없습니다.
아무도이 문제에 대한 해결책을 알고 있습니까?
Thansk 모두!
다음 줄을 제거하십시오. dr.Read(); 무슨 일이야? – tbone
안녕하세요 @ tbone, 빠른 테스트를했는데 dr.Read() 제거 문제가 해결 될 것 같습니다. 다음 주 전체 코드를 테스트하고 결과를 알려 드리겠습니다 !!! –
Hey @tbone, 귀하의 의견은이 코드를 해결했습니다. dr.Read()가 제대로 작동하지 않으면! 도와 주셔서 정말로 고맙습니다. –