powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / odp.net + c# + большой файл загнать в БД
1 сообщений из 1, страница 1 из 1
odp.net + c# + большой файл загнать в БД
    #39359244
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги!
с шарпами работали, но мало
Возник вопрос по загрузке в БД файлов не такого уж и большого размера - 150м. Но памяти на хватает на сервере WIn-2003

Вот такой пример, в котором файл хоть и через стрим, но все равно загружается полностью в приложение в переменную типа byte[]
Такой метод кажется неприличным, но какой правильный с этими средствами разработки (odp.net + c#)?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
                    //http://www.akadia.com/services/dotnet_orablobs.html
                    // FileStream to get the Employee Photo
                    FileStream fs;

                    // Get Image Data from the Filesystem if User has loaded a Photo
                    // by the 'Browse' button
                    if (_strImageName != "")
                    {
                        fs = new FileStream(@_strImageName, FileMode.Open,FileAccess.Read);
                        _imageLength = (int)fs.Length;

                        // Create a byte array of file stream length
                        _imageData = new byte[fs.Length];

                        // Read block of bytes from stream into the byte array
                        fs.Read(_imageData,0,System.Convert.ToInt32(fs.Length));

                        // Close the File Stream
                        fs.Close();
                    }

                    // Instantiate an OracleDataAdapter object with the
                    // appropriate query
                    empAdapter = new OracleDataAdapter(
                        "SELECT empno, ename, job, photo" +
                        "  FROM emp WHERE empno = " + _curEmpNo, _conn);

                    // Instantiate a DataSet object
                    empDataSet= new DataSet("emp");

                    // Create an UPDATE command as a template for the
                    // OracleDataAdapter.
                    empAdapter.UpdateCommand = new OracleCommand
                        ("UPDATE emp SET " +
                        "job = :iJOB, "+
                        "photo = :iPHOTO " +
                        "WHERE empno = :iEMPNO", _conn);

                    // Add the Parameters for the UPDATE Command
                    empAdapter.UpdateCommand.Parameters.Add(":iJOB",
                       OracleDbType.Varchar2, 9, "job");
                    empAdapter.UpdateCommand.Parameters.Add(":iPHOTO",
                       OracleDbType.Blob, _imageLength, "photo");
                    empAdapter.UpdateCommand.Parameters.Add(":iEMPNO",
                       OracleDbType.Int16, 0, "empno");

                    // Configure the schema to match with the Data Source.
                    // AddWithKey sets the Primary Key information to complete the
                    // schema information
                    empAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

                    // Configures the schema to match with Data Source
                    empAdapter.FillSchema(empDataSet, SchemaType.Source, "emp");

                    // Fills the DataSet with 'EMP' table data
                    empAdapter.Fill(empDataSet,"emp");

                    // Get the current Employee ID row for updation
                    DataTable empTable = empDataSet.Tables["emp"];
                    empRow = empTable.Rows.Find(_curEmpNo);

                    // Start the edit operation on the current row in
                    // the 'emp' table within the dataset.
                    empRow.BeginEdit();

                    // Assign the value of the Job Title
                    empRow["job"] = txtEmpJob.Text;

                    // Assign the value of the Photo if not empty
                    if (_imageData.Length != 0)
                    {
                        empRow["photo"] = _imageData;
                    }

                    // End the editing current row operation
                    empRow.EndEdit();

                    // Update the database table 'EMP'
                    empAdapter.Update(empDataSet,"emp");

...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / odp.net + c# + большой файл загнать в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]