Oracle DBA Forum  

Вернуться   Oracle DBA Forum > Programming > PHP, PERL, PYTHON, C# > Oracle и C# .NET

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 13.11.2009, 13:04
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию C# .net извлечение данных из БД Oracle в файл


using System;
using System.Data;
using System.Data.OracleClient;
using System.IO;
using System.Text;



namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{



string source = "Data Source=(DESCRIPTION="
+ "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.32. 11.95)(PORT=1521)))"
+ "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=tes t)));"
+ "User Id=helper_user;Password=flomaster;";


OracleConnection connnection = new OracleConnection(source);


try
{
connnection.Open();


string serverCount;
string serverConnections;


string countConnectedServersQuery = "select count(do) from region where (system_pass <>'SYSTEM_PASS_UNKNOWN' and alive='Y') or (system_pass = 'SYSTEM_PASS_UNKNOWN' and sys_pass <> 'SYS_PASS_UNKNOWN' and alive='Y')";

OracleCommand cmd = new OracleCommand(countConnectedServersQuery, connnection);

object countConnectedServers = cmd.ExecuteOracleScalar();

serverConnections = countConnectedServers.ToString();


string countAllServersQuery = "select count(do) from region where alive='Y'";

OracleCommand cmd2 = new OracleCommand(countAllServersQuery, connnection);

object countAllServers = cmd2.ExecuteOracleScalar();


serverCount = countAllServers.ToString();


TextWriter writer = new StreamWriter(@"c:\region.sql", false, Encoding.GetEncoding("Windows-1251"));



Console.WriteLine("---------------------------------------------------------");
Console.WriteLine("--- Перечислено: {0} региональных отделений из {1} ----", serverConnections, serverCount);
Console.WriteLine("---------------------------------------------------------");




writer.WriteLine("---------------------------------------------------------");
writer.WriteLine("--- Перечислено: {0} региональных отделений из {1} ----", serverConnections, serverCount);
writer.WriteLine("---------------------------------------------------------");


writer.WriteLine("");
writer.WriteLine("");
writer.WriteLine("---------------------------------------------------------");
writer.WriteLine("--------------- Подключаемся как SYSTEM ----------------");
writer.WriteLine("---------------------------------------------------------");
writer.WriteLine("");
writer.WriteLine("");





// Вывести на экран данные с помощью DataSet




string select = "select do, node, locations, system_pass, ip from region where system_pass <>'SYSTEM_PASS_UNKNOWN' and alive='Y' order by 1";

OracleDataAdapter da = new OracleDataAdapter(select, connnection);
DataSet ds = new DataSet();
da.Fill(ds, "C");



// Console.WriteLine("----------------------");
Console.WriteLine("");





foreach (DataRow row in ds.Tables["C"].Rows)
{

writer.WriteLine("");
writer.WriteLine("-- {0} / {1} / {2}", row[0], row[1], row[2]);
writer.WriteLine("conn system/{0}@{1}:1521/XE;", row[3], row[4]);
writer.WriteLine("@fast_reg_recover.sql");
writer.WriteLine("");

}

writer.WriteLine("");
writer.WriteLine("");
writer.WriteLine("---------------------------------------------------------");
writer.WriteLine("------------- Подключаемся SYS as SYSDBA --------------");
writer.WriteLine("---------------------------------------------------------");
writer.WriteLine("");
writer.WriteLine("");






// Подключаемся как SYS as SYSDBA


string sysRecord = "select do, node, locations, sys_pass, ip from region where system_pass = 'SYSTEM_PASS_UNKNOWN' and sys_pass <> 'SYS_PASS_UNKNOWN' and alive='Y' order by 1";

OracleDataAdapter da2 = new OracleDataAdapter(sysRecord, connnection);
DataSet ds2 = new DataSet();
da2.Fill(ds2, "C");





foreach (DataRow row in ds2.Tables["C"].Rows)
{

writer.WriteLine("");
writer.WriteLine("-- {0} / {1} / {2}", row[0], row[1], row[2]);
writer.WriteLine("conn sys/{0}@{1}:1521/XE as sysdba;", row[3], row[4]);
writer.WriteLine("@fast_reg_recover.sql");
writer.WriteLine("");

}




writer.WriteLine("");
writer.WriteLine("");
writer.WriteLine("---------------------------------------------------------");
writer.WriteLine("------------------ Конец документа ----------------------");
writer.WriteLine("---------------------------------------------------------");
writer.WriteLine("");
writer.WriteLine("");


writer.Close();
Console.WriteLine("OK!");

}



catch (OracleException ex)
{
if (connnection.State != ConnectionState.Open)
{
Console.WriteLine("Connection open failed");
Console.WriteLine("Connection string used: "
+ connnection.ConnectionString);

}


Console.WriteLine(ex.Message);

}



finally
{
// Close and Dispose OracleConnection object
connnection.Close();
connnection.Dispose();
// Console.WriteLine("Disconnected");
}



Console.ReadKey();

}

}
}

__________________
Телеграм чат

Последний раз редактировалось Marley; 15.11.2009 в 16:52.
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 22:23. Часовой пояс GMT +3.


Powered by vBulletin®