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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySQL Client, HeLP 
:(
    Опции темы
AntonioBanderaz
Дата 19.12.2005, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


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

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



написал программу для удалённого изменения базы данных MySQL, выполнения запросов и тд...
У меня содержание таблицы грузится в DataGrid... (см рисунок)
Как мне сделать чтобы пользователь мог менять DataGrid и данные изменялись на сервере....
Или как можно получить введённые пользователем строки в DataGrid?

Это сообщение отредактировал(а) AntonioBanderaz - 19.12.2005, 17:24


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
Exception
Дата 19.12.2005, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ну, обнови через адаптер базу данных. Датасет бери из DataSource DataGrid'а
PM   Вверх
AntonioBanderaz
Дата 19.12.2005, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


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

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



Я не через Адаптер делал, если я правильно понял...
Я делал вот так...
Код

namespace DataBases
{

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Collections;
    using System.Windows.Forms;
    using MySql.Data.MySqlClient;

    public class Connections
    {
        private Array<MySqlConnection> Connection = new Array<MySqlConnection>();

        public MySqlConnection this[int index] { get { return this.Connection[index]; } set { return; } }
        public bool AddConnection(string UserName, string UserPassword, string DBHost)
        {
            string ConnString = String.Format("server={0};user id = {1}; password = {2}; pooling = false", DBHost, UserName, UserPassword);
            try
            {
                this.Connection.Add(new MySqlConnection(ConnString));
                this.Connection[this.Connection.Len - 1].Open();
                return true;
            }
            catch
            {
                return false;
            }
        }
        public void RemConnection(int Index)
        {
            if (Index < this.Connection.Len)
            {
                this.Connection[Index].Close();
                this.Connection.Remove(Index);
            }
        }
        public void ClearConnections()
        {
            for (int i = 0; i < this.Connection.Len; i++)
                this.RemConnection(i);
        }
    }

    public class MySQL
    {
        private Connections Connections = new Connections();
        private MySqlCommandBuilder ComandBuilder;
        private DataTable DataTable;
        private MySqlDataAdapter DataAdapter;
        private int Index = -1;

        public MySQL this[int index] { get { this.Index = index; return this; } set { return; } }
        public void SelectDB(string Database)
        {
            if (this.Index == -1) return;
            if (this.Connections[this.Index].Database != Database)
                this.Connections[this.Index].ChangeDatabase(Database);
            return;
        }
        public DataTable getDataTable()
        {
            DataTable = new DataTable();
            if (DataAdapter != null)
            {
                try
                {
                    DataAdapter.Fill(DataTable);
                    return DataTable;
                }
                catch (MySqlException ex)
                {
                    MessageBox.Show("Error (" + ex.Number + "):" + ex.Message);
                    return new DataTable();
                }
            }
            return new DataTable();
        }
        public bool execSQL(string SQL)
        {
            if (this.Index == -1) return false;
            try
            {
                DataAdapter = new MySqlDataAdapter(SQL, this.Connections[this.Index]);
                ComandBuilder = new MySqlCommandBuilder(DataAdapter);
                return true;
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Error (" + ex.Number + "):" + ex.Message);
                return false;
            }
        }
        public int execSQL_noReturn(string SQL)
        {
            if (this.Index == -1) return -1;
            MySqlCommand cmd = new MySqlCommand(SQL, this.Connections[this.Index]);
            try
            {
                return cmd.ExecuteNonQuery();
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Error (" + ex.Number + "):" + ex.Message);
                return 0;
            }
        }
        public ArrayList execSQL_ArrayReturn(string SQL, int ColumnNumber)
        {
            if (this.Index == -1) return new ArrayList();
            MySqlDataReader reader = null;
            MySqlCommand cmd = new MySqlCommand(SQL, this.Connections[this.Index]);
            try
            {
                reader = cmd.ExecuteReader();
                ArrayList __LST = new ArrayList();
                while (reader.Read())
                {
                    try
                    {
                        __LST.Add(reader.GetString(ColumnNumber));
                    }
                    catch (IndexOutOfRangeException ex)
                    {
                        MessageBox.Show("Error Undefinded Column #:" + ex.Message);
                    }
                }
                return __LST;
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Error (" + ex.Number + "):" + ex.Message);
                return new ArrayList();
            }
            finally
            {
                if (reader != null) reader.Close();
            }
        }
        public ArrayList ShowDataBase()
        {
            return this.execSQL_ArrayReturn("SHOW DATABASES", 0);
        }
        public ArrayList ShowTables(string Database)
        {
            if (Database != "THIS") this.SelectDB(Database);
            return this.execSQL_ArrayReturn("SHOW TABLES", 0);
        }
        public bool Close()
        {
            try
            {
                this.Connections.RemConnection(this.Index);
                return true;
            }
            catch
            {
                return false;
            }
        }
        public bool AddConnection(string UserName, string UserPassword, string DBHost)
        {
            return this.Connections.AddConnection(UserName, UserPassword, DBHost);
        }
        public void createTable(string tableName)
        {
            this.execSQL_noReturn("CREATE TABLE `" + tableName + "` (`id` INT NOT NULL AUTO_INCREMENT ,PRIMARY KEY (`id`)) TYPE = MYISAM;");
        }
        public void renameTable(string OldName, string NewName)
        {
            this.execSQL_noReturn("ALTER TABLE `" + OldName + "` RENAME `" + NewName + "`;");
        }

        ~MySQL()
        {
            this.Connections.ClearConnections();
        }
    }
}




--------------------
ГЫ... 
PM MAIL ICQ   Вверх
AntonioBanderaz
Дата 19.12.2005, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


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

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



Вот исходники, если надо.
rename2rar

Это сообщение отредактировал(а) AntonioBanderaz - 19.12.2005, 18:17

Присоединённый файл ( Кол-во скачиваний: 38 )
Присоединённый файл  test.cs 93,92 Kb


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
Exception
Дата 19.12.2005, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Не пойму.. Вызови DataAdapter.Update для нужной таблицы.
PM   Вверх
AntonioBanderaz
Дата 19.12.2005, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


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

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



Цитата(Run @ 19.12.2005, 18:49)
Не пойму.. Вызови DataAdapter.Update для нужной таблицы.

Я бы с удовольствием, это моя первая программы на C#, я это всё в первый раз вижу перед глазами...
Я пытался сделать вот так... Но он меня на HELP выкидывает с каким-то исключением.... как я понял надо привязать Адаптер к DATASET'у которого у меня нет.... Объясните по-подробнее пожалуйста...
Код

public bool execSQL(string SQL) //Здесь всё просто, и связь с коннектором есть и SQl передаётся...
        {
            if (this.Index == -1) return false;
            try
            {
                this.DataAdapter = new MySqlDataAdapter(SQL, this.Connections[this.Index]);
                this.ComandBuilder = new MySqlCommandBuilder(DataAdapter);
                return true;
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Error (" + ex.Number + "):" + ex.Message);
                return false;
            }
        }
public void Update(DataTable Table)
        {
            this.DataAdapter.Update(Table);
        }



--------------------
ГЫ... 
PM MAIL ICQ   Вверх
Exception
Дата 19.12.2005, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ну, для начала, где ошибка, и какая? Во-вторых, зафиг тут CommandBuilder? Для выполнения SQL пользуй ExecuteNonQuery.
В-третьих, покажи вызывающий код.
PM   Вверх
AntonioBanderaz
Дата 20.12.2005, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


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

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



Цитата(Run @ 19.12.2005, 21:53)
Во-вторых, зафиг тут CommandBuilder? Для выполнения SQL пользуй ExecuteNonQuery.

Вот для чего.
Код

public DataTable getDataTable()    
        {    
            DataTable = new DataTable();    
            if (DataAdapter != null)    
            {    
                try    
                {    
                    DataAdapter.Fill(DataTable);    
                    return DataTable;    
                }    
                catch (MySqlException ex)    
                {    
                    MessageBox.Show("Error (" + ex.Number + "):" + ex.Message);    
                    return new DataTable();    
                }    
            }    
            return new DataTable();    
        }



Цитата(Run @ 19.12.2005, 21:53)
В-третьих, покажи вызывающий код.

Вот здесть private void button12_Click
Код

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Data;
using System.Windows.Forms;
using DataBases;

namespace test
{
    public partial class mainForm : Form
    {
        
        
        private MySQL Base = new MySQL();
        private TreeNode database;

        public Form FirstForm;

        public mainForm()
        {
            InitializeComponent();
        }

        private void button12_Click(object sender, EventArgs e) //вот вызывающий код
        {
            this.Base[0].Update((DataTable)this.Val.DataSource);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.Val.AllowUserToAddRows = false;
            this.Val.AllowUserToDeleteRows = false;
            this.Structure.AllowUserToDeleteRows = false;
            this.Structure.AllowUserToAddRows = false;
        }

        protected override void OnClosed(EventArgs e)
        {
            base.OnClosed(e);
            this.FirstForm.Show();
            this.Base.Close();
        }

        public void FillTree(string UserName, string UserPass, string BDHost)
        {
            if (!this.Base.AddConnection(UserName, UserPass, BDHost)) return;
            this.redrawTree();
        }

        private void DataBaseTree_AfterSelect(object sender, TreeViewEventArgs e)
        {
            this.redraw();
        }

        private void redraw()
        {
            if (DataBaseTree.SelectedNode.ImageIndex == 2)
            {
                if (DataBaseTree.SelectedNode.Parent.ImageIndex == 0)
                    this.Base[0].SelectDB(DataBaseTree.SelectedNode.Parent.Text);

                this.renameTable.Text = DataBaseTree.SelectedNode.Text;
                this.remTableName.Text = DataBaseTree.SelectedNode.Text;
                this.renameFrom.Text = DataBaseTree.SelectedNode.Text;

                this.Base[0].execSQL("SELECT * FROM " + DataBaseTree.SelectedNode.Text + " LIMIT 10");

                this.Val.DataSource = this.Base[0].getDataTable();

                ArrayList pol = this.Base[0].execSQL_ArrayReturn("DESCRIBE " + DataBaseTree.SelectedNode.Text, 0);
                this.Rem.Items.Clear();
                this.EditPole.Items.Clear();
                foreach (string It in pol)
                {
                    this.Rem.Items.Add(It);
                    this.EditPole.Items.Add(It);
                }
                this.groupe.Enabled = true;
                this.groupe2.Enabled = true;
                this.EditGroupe.Enabled = true;

                this.Base[0].execSQL("DESCRIBE " + DataBaseTree.SelectedNode.Text);
                this.Structure.DataSource = this.Base[0].getDataTable();
            }
            else
            {
                if(DataBaseTree.SelectedNode.ImageIndex == 0)
                    this.Base[0].SelectDB(DataBaseTree.SelectedNode.Text);
                this.groupe.Enabled = false;
                this.groupe2.Enabled = false;
                this.EditGroupe.Enabled = false;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Base[0].execSQL("SELECT * FROM " + DataBaseTree.SelectedNode.Text + " LIMIT " + this.LimitFrom.Text + ", " + this.limitTo.Text);
            this.Val.DataSource = this.Base[0].getDataTable();
        }

        private void allowEdit_CheckedChanged(object sender, EventArgs e)
        {
            if (this.allowEdit.Checked == true)
            {
                this.Val.AllowUserToAddRows = true;
                this.Val.AllowUserToDeleteRows = true;
            }
            else
            {
                this.Val.AllowUserToAddRows = false;
                this.Val.AllowUserToDeleteRows = false;
            }
        }

        private void PoleAdd_Click(object sender, EventArgs e)
        {
            if (this.PoleName.Text != "")
            {
                string attr = "";
                string primary = "";
                string lenght = "";
                string SQL = "";
                if (this.attribs.Text != "")
                {
                    attr = this.attribs.Text;
                }
                if (this.Lenght.Text != "") { lenght = "(" + this.Lenght.Text + ")"; }
                if (this.PrimariKey.Checked)
                {
                    primary = " PRIMARY KEY";
                }
                SQL = "ALTER TABLE " + DataBaseTree.SelectedNode.Text + " ADD " + this.PoleName.Text + " " + this.Type.Text + lenght + " DEFAULT '" + this.Default.Text + "' " + this.isNull.Text + " " + attr + " " + primary;
                this.Base[0].execSQL_noReturn(SQL);

                this.redraw();
            }
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            if (this.Rem.Text != "")
            {
                this.Base[0].execSQL_noReturn("ALTER TABLE " + DataBaseTree.SelectedNode.Text + " DROP COLUMN " + this.Rem.Text);
                this.redraw();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Base[0].execSQL(this.SQLtext.Text);
            this.SQLT.DataSource = this.Base[0].getDataTable();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.SQLtext.Text = "";
        }

        private void button9_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void button8_Click(object sender, EventArgs e)
        {
            Form connect = new connectForm();
            connect.ShowDialog();
            return;
        }

        private void FullTextB_Click(object sender, EventArgs e)
        {
            if (this.EditPole.Text != "") this.Base[0].execSQL_noReturn("ALTER TABLE `" + DataBaseTree.SelectedNode.Text + "` ADD FULLTEXT(`" + this.EditPole.Text + "`);");
        }

        private void IndexB_Click(object sender, EventArgs e)
        {
            if (this.EditPole.Text != "") this.Base[0].execSQL_noReturn("ALTER TABLE `" + DataBaseTree.SelectedNode.Text + "` ADD INDEX(`" + this.EditPole.Text + "`);");
        }

        private void UniqB_Click(object sender, EventArgs e)
        {
            if (this.EditPole.Text != "") this.Base[0].execSQL_noReturn("ALTER TABLE `" + DataBaseTree.SelectedNode.Text + "` ADD UNIQUE(`" + this.EditPole.Text + "`);");
        }

        private void EditB_Click(object sender, EventArgs e)
        {
            string SQL = "";
            if (this.EditPole.Text != "")
            {
                SQL = "ALTER TABLE `" + DataBaseTree.SelectedNode.Text + "` CHANGE `" + this.EditPole.Text + "` `" + this.newName.Text + "` ";
                if (this.editLenght.Text != "") SQL += this.editType.Text + "(" + this.editLenght.Text + ") ";
                else SQL += this.editType.Text + " ";
                SQL += this.editIsNull.Text + " DEFAULT '" + this.editDef.Text + "' ;";
                this.Base[0].execSQL_noReturn(SQL);
                this.redraw();
            }
        }

        private void EditPole_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.newName.Text = this.EditPole.Text;
        }

        private void redrawTree()
        {
            DataBaseTree.Nodes.Clear();
            ArrayList DBases = this.Base[0].ShowDataBase();
            this.remdataBase.Items.Clear();
            foreach (string BaseName in DBases)
            {
                ArrayList DBaseTable = this.Base[0].ShowTables((string)BaseName);
                int i = 0;
                TreeNode[] tables = new TreeNode[DBaseTable.Count];
                foreach (string TableName in DBaseTable)
                {
                    tables[i] = new TreeNode((string)TableName, 2, 2);
                    i++;
                }
                this.remdataBase.Items.Add(BaseName);
                database = new TreeNode(BaseName, 0, 0, tables);
                DataBaseTree.Nodes.AddRange(new TreeNode[] { database });
            }
        }

        private void button6_Click(object sender, EventArgs e)
        {
            if (this.renameTable.Text != "")
            {
                this.Base[0].renameTable(DataBaseTree.SelectedNode.Text, this.renameTable.Text);
                this.redrawTree();
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            if (this.createTable.Text != "")
            {
                this.Base[0].createTable(this.createTable.Text);
                this.redrawTree();
            }
        }

        private void SQLtext_TextChanged(object sender, EventArgs e)
        {
            if (this.SQLtext.Text.Length == 0) this.button2.Enabled = false;
            else this.button2.Enabled = true;
        }

        private void button8_Click_1(object sender, EventArgs e)
        {
            if (this.createTableName.Text != "")
            {
                this.Base[0].createTable(this.createTableName.Text);
                this.redrawTree();
            }
        }

        private void button7_Click(object sender, EventArgs e)
        {
            if (this.renameTo.Text != "")
            {
                this.Base[0].renameTable(this.renameFrom.Text, this.renameTo.Text);
                this.redrawTree();
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (this.remTableName.Text != "")
            {
                this.Base[0].execSQL_noReturn("DROP TABLE `" + this.remTableName.Text + "` ;");
                this.redrawTree();
            }
        }

        private void button10_Click(object sender, EventArgs e)
        {
            if (this.remdataBase.Text != "")
            {
                this.Base[0].execSQL_noReturn("DROP DATABASE `" + this.remdataBase.Text + "` ;");
                this.redrawTree();
            }
        }

        private void button11_Click(object sender, EventArgs e)
        {
            if (this.createDB.Text != "")
            {
                this.Base[0].execSQL_noReturn("CREATE DATABASE `" + this.createDB.Text + "` ;");
                this.redrawTree();
            }
        }

    }
}



Цитата(Run @ 19.12.2005, 21:53)
Ну, для начала, где ошибка, и какая?

Ошибка вот здесь
Код

public void Update(DataTable Table)    
        {    
            this.DataAdapter.Update(Table);   &nbsp;
        }

и вот такая MySqlCommandBuilder cannot operate on tables with no unique or key columns, хотя в таблице это всё есть.[s]

Это сообщение отредактировал(а) AntonioBanderaz - 20.12.2005, 15:15


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
arilou
Дата 21.12.2005, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



AntonioBanderaz
Попробуй SelectCommand, InsertCommand, UpdateCommand и DeleteCommand для датаадаптера сформировать вручную. Возможно, есть какие-то глюки в мускульной реализации.


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


Velichko Anton
**


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

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



оверлоады для существующих методов делать?
Добавлено @ 17:03
можно пример своеё реализации?


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
arilou
Дата 23.12.2005, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



AntonioBanderaz
Я догнал, в чем трабла. Ты заполняешь DataTable с помощью SQL-запроса. Естественно, в самом запросе никакой информации о ключах нет, поэтому DataAdapter.Update не срабатывает.

Что тут можно сделать:
1. Создать типизированный датасет (typed DataSet), см. MSDN
или
2. Обновлять записи с помощью своего кода, примерно так:
Код

foreach(DataRow dr in dataTable.Rows)
  myUpdate(dr);


Где метод myUpdate(DataRow) сам будет вызывать SQL-запросы по обновлению. Понимаешь?


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


Velichko Anton
**


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

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



arilou
да я понял.. Спасибо сейчас попробую ) Мне второй вариант больше нравится )))
Добавлено @ 11:28
Нет со вторым тоже беда, тоже не может сделать обновление...

**MySqlCommandBuilder cannot operate on tables with no unique or key columns


Остаётся только первый вариант... ИМХО противный... Ну чтож поделаешь...


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
arilou
Дата 26.12.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(AntonioBanderaz @ 26.12.2005, 11:21)
**MySqlCommandBuilder cannot operate on tables with no unique or key columns

Builder не надо юзать, руками smile


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


Эксперт
****


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

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





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


Velichko Anton
**


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

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



А всё понял, парсить ручками datarow и выполнять запросы...


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

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

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


 




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


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

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