Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с базами в .Net, Общие принципы 
:(
    Опции темы
seric
Дата 27.2.2006, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 16.12.2005

Репутация: нет
Всего: нет



Пожалуйста подскажите!!
Почему скорость работы при подключении к БД Access используя NET Framework 1.1 во много раз выше
чем в NET Framework 2.0. Може чего не так делаю? Вот пример кода:
Код

private System.Data.OleDb.OleDbConnection m_conn;
private System.Data.OleDb.OleDbDataReader reader;
private System.Data.OleDb.OleDbCommand comm;

public _ADO(string myConnString)
{
    m_conn=new OleDbConnection(myConnString);            
                comm = new OleDbCommand();
    comm.Connection=m_conn;
}

public bool FillSotr(string sql,ref ArrayList mArr)
{
    mArr=null;
    try
    {
        comm.CommandText=@sql;
        mArr=new ArrayList();
        m_conn.Open();
        reader=comm.ExecuteReader(CommandBehavior.CloseConnection);
        if(!reader.HasRows)
            return false;
        while (reader.Read())
        {
            mArr.Add(new Sotr(reader.GetString(1)+" "+reader.GetString(2)+" "+reader.GetString3),reader.GetInt32(0)));
        }
        reader.Close();
        }
        catch(System.Exception e)
        {
                            m_conn.Close();
            MessageBox.Show(e.Message);    
            return false;
        }
        return true;
    }


PM MAIL   Вверх
Exception
Дата 27.2.2006, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Давайте не оффтопить. Одна тема -- один вопрос. Это вам не свалка.
Насчет перспектив развития ADO .NET скажу, что разрабатывается технология DLinq, которая произвела на меня огромное впечатление. Готовлю статью о технологии LINQ, и DLinq, в частности.
PM   Вверх
Medved
Дата 27.2.2006, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 3
Всего: 154



По сабжу:
http://msdn.microsoft.com/library/en-us/dn....asp?frame=true

в качестве дополнительного чтения (лишним не будет):
http://msdn.microsoft.com/library/default....html/BOAGag.asp


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
arilou
Дата 28.2.2006, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



[offtop]Какую тему старую подняли, а зачем?

....... И где сейчас Kurt ?
[/offtop]





--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Xonxt
Дата 15.3.2008, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 24.1.2006
Где: Украина / Одесса

Репутация: 1
Всего: 1



Товарищи. Простите, что поднимаю тему, но мне нужен ответ на "тривиальный" вопрос.

Скажите в чем разница между этими двумя фрагментами:

Код

        public bool AddToDB(string Table_Name, string query)
        {
               ...               
               // создание команды Insert для DataAdapter
                conn = (OleDbConnection)myDataAdapter.SelectCommand.Connection;
                myDataAdapter.InsertCommand = conn.CreateCommand();
                myDataAdapter.InsertCommand.CommandText = "insert into " + Table_Name + " values(" + query + ")";
               ...

                myDataAdapter.Update(myDataSet, Table_Name);
                
                return true;
        }

с последующим вызовом этого метода:
Код
AddToDB("InStore", "25, Книжка, Аффтар, 300");


и простым брутальным

Код

        public bool AddToDB(string Table_Name, string query)
        {
               ...               
               // создание команды Insert для DataAdapter
                conn = (OleDbConnection)myDataAdapter.SelectCommand.Connection;
                myDataAdapter.InsertCommand = conn.CreateCommand();
                myDataAdapter.InsertCommand.CommandText = "insert into " + Table_Name + " values(1,1,1,1)";
               // т.е. я явно задаю параметры для добавления в базу данных, игнорируя передаваемое в метод значение query
               ...

                myDataAdapter.Update(myDataSet, Table_Name);
                
                return true;
        }


???

Потому что, судя по всему, для компилятора разница огромная. Т.е. при выполнении первого фрагмента, оно ругается (я сделал обработку исключения с выводом текста ошибки в МесаджБокс) на "отсуствие значения одного или нескольких необходимых параметров", аа если я тупо задаю "1,1,1,1", как во втором фрагменте, то оно успешно добавляется.
PM MAIL ICQ Skype   Вверх
Xonxt
Дата 15.3.2008, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 24.1.2006
Где: Украина / Одесса

Репутация: 1
Всего: 1



Черт. Разобрался. Нужно было просто брать в кавычки.

Код
AddToDB("InStore", "25, 'Книжка', 'Аффтар', 300");
  smile  smile  smile 

Спасибо всем smile 
PM MAIL ICQ Skype   Вверх
Xonxt
Дата 20.4.2008, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 24.1.2006
Где: Украина / Одесса

Репутация: 1
Всего: 1



Столкнулся с еще одной проблемой.

Может ли кто-нибудь привести небольшой пример, как с помощью OleDB создать в базе данных новую таблицу?

Допустим, есть:
Код
conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + @"data source=D:\DataBase.mdb";


Есть также 
Код
myDataAdapter


И есть 
Код
myDataSet = new DataSet();
            
DataTable myTable = new DataTable(Table_Name);
DataColumn myColumn1 = new DataColumn("Column1", Type.GetType("System.Int32")); 
DataColumn myColumn2 = new DataColumn("Column2", Type.GetType("System.String"));

myTable.Columns.Add(myColumn1);
myTable.Columns.Add(myColumn2);

myDataSet.Tables.Add(myTable);


Как эту таблицу добавить в базу? Заранее благодарю smile

Потому что в книге, по которой я этой разбираю (Джесс Либерти) есть только про добавление/удаление/изменение записей в конкретной таблице и с этим я уже разобрался - всё отлично работает. А вот про создание таблиц в книге ни слова :(


______

Попробовал по-другому:

Код

public bool CreateTable(string Table_Name, string query)
{
    try
    {
        commandString = "create table " + Table_Name + "( " + query + ")";

        OleDbCommand cmd = new OleDbCommand(commandString, conn);
        cmd.ExecuteNonQuery();
              
        return true;
    }
    catch (Exception ex) { MessageBox.Show("Ошибка создания: " + ex.Message); return false; }
}

...

CreateTable("Bugaga", "Key INT, BookName CHAR(40)");


Так оно ругается на имя поля "Key". При другом имени всё нормально. Подразумевается, что поле "Key" - это собственно ключевое поле с автоинкрементом.
Помогите правильно построить SQL-запрос, чтобы получить таблицу с полями "Key, Name, Author, Year".

Это сообщение отредактировал(а) Xonxt - 20.4.2008, 20:14
PM MAIL ICQ Skype   Вверх
thomas
Дата 20.4.2008, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 6
Всего: 65



Xonxt
Приветствую.
Ну, во первых, для таких вопросов есть соответствующий раздел. "Базы данных под .NET"
И вопросы относящиеся к базам данных в .NET надо задавать там.

Во вторых, учим DDL, в котором как раз и существуют нужные тебе команды.
А именно создание и удаление таблиц.

Код

CREATE TABLE myTable 
(
Column1 integer primary key,
Column2 text
)
 

Надеюсь, ты знаешь как выполнить sql-команду.

Успехов.  smile

Добавлено @ 20:21
Цитата

Так оно ругается на имя поля "Key". При другом имени всё нормально. Подразумевается, что поле "Key" - это собственно ключевое поле с автоинкрементом.
Помогите правильно построить SQL-запрос, чтобы получить таблицу с полями "Key, Name, Author, Year".

Правильно ругаеться: KEY - зарезервированное слово.

Код

CREATE TABLE myTable 
(
BookID integer primary key,
BookName CHAR(40),
Author CHAR(40),
BookYear DATETIME
)


Это сообщение отредактировал(а) thomas - 20.4.2008, 20:22


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1253 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.