Привет, Я разрабатываю настольное приложение Windows в С# 4.0, Visual Studio 2010. У меня ниже метод для извлечения данных из таблицы oracle.
private static MemoryStream GetStatement(OracleConnection con, int loginId, string session, string ip, string acNo, string frmDate, string toDate)
{
var memoryStream = new MemoryStream();
using (var oraQuery =new OracleCommand(@"SELECT statement_file from
user_account_statement where login_id=" + loginId +" and session_key='"
+ session + "' and ipaddress='" + ip + "' and account_number='"
+ acNo + "' and from_date=" + frmDate + " and to_date="
+ toDate + " and status='closed'", con))
{
using (var oraQueryResult = oraQuery.ExecuteReader())
if (oraQueryResult != null)
{
while (oraQueryResult.Read())
{
var blob = new Byte[(oraQueryResult.GetBytes(0, 0, null, 0, int.MaxValue))];
oraQueryResult.GetBytes(0, 0, blob, 0, blob.Length);
//updated.
memoryStream.Write(blob, 0, blob.Length);
}
}
}
return memoryStream;
}
при выполнении метода в запросе я получаю ошибку, что ORA-00933: SQL command not properly ended
. Я пытался суффикс ;
к запросу, но получить ту же ошибку. Может ли кто-нибудь исправить меня, когда я ошибаюсь.
Ниже код работал для меня с использованием параметризованного запроса. Спасибо вам всем:
private static MemoryStream GetStatement(OracleConnection con, int loginId, string session, string ip, string acNo, DateTime frmDate, DateTime toDate)
{
var memoryStream = new MemoryStream();
using (
var oraQuery =
new OracleCommand(
@"SELECT statement_file from user_account_statement where login_id=:1 and session_key=:2" +
"and ipaddress=:3 and account_number=:4 and from_date=:5 and to_date=:6" +
" and status='closed'", con))
{
oraQuery.BindByName = true;
oraQuery.Parameters.Add(":1", OracleDbType.Int32).Value = loginId;
oraQuery.Parameters.Add(":2", OracleDbType.NVarchar2).Value = session;
oraQuery.Parameters.Add(":3", OracleDbType.NVarchar2).Value = ip;
oraQuery.Parameters.Add(":4", OracleDbType.NVarchar2).Value = acNo;
oraQuery.Parameters.Add(":5", OracleDbType.Date).Value = frmDate;
oraQuery.Parameters.Add(":6", OracleDbType.Date).Value = toDate;
using (var oraQueryResult = oraQuery.ExecuteReader())
if (oraQueryResult != null)
{
while (oraQueryResult.Read())
{
var blob = new Byte[(oraQueryResult.GetBytes(0, 0, null, 0, int.MaxValue))];
oraQueryResult.GetBytes(0, 0, blob, 0, blob.Length);
memoryStream.Write(blob, 0, blob.Length);
}
}
}
return memoryStream;
}
oraQuery
при отладке кода? Эта команда работает на вашем менеджере баз данных? (Я так не думаю, конечно)