[C#] Kolekcia do DataGridView

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod sejnt 25. 11. 2011 23:50

Zdravim mam databazu v MSSQL a potrebujem ju namapovat.Lenze to mapovanie musi byt vlastne takze nemozem to urobit pomocou LINQ a ani nejako jednoducho takto:
Kód: Vybrat vše
            SqlDataAdapter adapter = new SqlDataAdapter(com, Database.connection);
            ds = new DataSet();
            adapter.Fill(ds,atribut);
             showTable("select * from "+table, table);
            dataGridView1.DataSource = Database.ds;
            dataGridView1.DataMember = table;   


Snazil som sa to urobit nejak takto
Kód: Vybrat vše
          private Collection<Automechanici> Read(SqlDataReader reader)
        {
            Collection<Automechanici> Automechanicis = new Collection<Automechanici>();
           
            while (reader.Read())
            {
                Automechanici Automechanici = new Automechanici();
                Automechanici.ID_automechanika = reader.GetString(0);
                Automechanici.Meno = reader.GetString(1);
                Automechanici.Priezvisko = reader.GetString(3);
                Automechanici.Pocet_opravenych = reader.GetString(4);
                Automechanici.SPZ = reader.GetString(5);
                Automechanicis.Add(Automechanici);
            }
            return Automechanicis;
        }

         private Collection<Automechanici> Select()
        {
            Database.Conncet();
            SqlCommand command = new SqlCommand(SQL_SELECT, Database.connection);
            SqlDataReader reader = command.ExecuteReader();
            Collection<Automechanici> Automechanicis = Read(reader);
            reader.Close();
            return Automechanicis;
        }



A potreboval by som to dat do toho DataGridu len neviem ako nato ..Popripade najky iny sposob toho objektovo -relacneho mapovania. Dakujem za rady.
Lekvár je produkt šialenej myšlienky ako neurobiť zo všetkých sliviek slivovicu.[CZ] Povidla jsou produkt šílený myšlenky jak neudelat ze všech švestek slivovici.
sejnt
Junior
Uživatelský avatar

Odeslat příspěvekod Xenik 26. 11. 2011 02:28

Proč nemůžeš použít LINQ to SQL? Promiň, ale nějak jsem nepochopil důvod proč to nejde. Jinak bych doporučil google a třeba tento odkaz http://www.codeproject.com/KB/aspnet/DataGridView__GridView.aspx
Xenik
Junior

Odeslat příspěvekod sejnt 27. 11. 2011 22:18

Pretoze ho mame zakazny.Podarilo sa mi dat dohromady toto ale aj tak mi to nefunguje. Na stranke sa mi nic nezobrazi davam to do GriedViewu.
Kód: Vybrat vše
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Oracle.DataAccess.Client;
using System.Collections.ObjectModel;

namespace AspNetExampleApp.Database
{
    [Serializable]
    public class BudovyTable : DbTable
    {
        public static String TABLE_NAME = "Budovy";

        public String SQL_SELECT = "SELECT * FROM budovy";
        public String SQL_SELECT_ID_budovy = "SELECT * FROM Budovy WHERE ID_budovy=:ID_budovy";
        public String SQL_INSERT = "INSERT INTO Budovy (ID_budovy, Adresa_budovy, Typ_budovy, Velkost_budovy) VALUES (:ID_budovy, :Adresa_budovy, :Typ_budovy, :Velkost_budovy)";
        public String SQL_UPDATE = "UPDATE Budovy SET ID_budovy=:ID_budovy, Adresa_budovy=:Adresa_budovy, Typ_budovy=:Typ_budovy, Velkost_budovy=:Velkost_budovy WHERE ID_budovy=:ID_budovy";
        public String SQL_DELETE = "DELETE FROM Budovy WHERE ID_budovy=:ID_budovy";

        public BudovyTable()
            : base(TABLE_NAME)
        {
        }

        public int Insert(Budovy Budovy)
        {
            mDatabase.Connect();
            OracleCommand command = mDatabase.CreateCommand(SQL_INSERT);
            PrepareCommand(command, Budovy);
            int ret = mDatabase.Insert(command);
            mDatabase.Close();
            return ret;
        }

        public int Update(Budovy Budovy)
        {
            mDatabase.Connect();
            OracleCommand command = mDatabase.CreateCommand(SQL_UPDATE);

            command.Parameters.Add(new OracleParameter(":" + Budovy.ATTR_id_budovy, OracleDbType.Varchar2, Budovy.ATTR_id_budovy.Length));
            command.Parameters[":" + Budovy.ATTR_id_budovy].Value = Budovy.ID_budovy;

            command.Parameters.Add(new OracleParameter(":" + Budovy.ATTR_Adresa_budovy, OracleDbType.Varchar2, Budovy.ATTR_Adresa_budovy.Length));
            command.Parameters[":" + Budovy.ATTR_Adresa_budovy].Value = Budovy.Adresa_budovy;

            command.Parameters.Add(new OracleParameter(":" + Budovy.ATTR_Typ_budovy, OracleDbType.Varchar2));
            command.Parameters[":" + Budovy.ATTR_Typ_budovy].Value = Budovy.Typ_budovy;

            command.Parameters.Add(new OracleParameter(":" + Budovy.ATTR_Velkost_budovy, OracleDbType.Varchar2));
            command.Parameters[":" + Budovy.ATTR_Velkost_budovy].Value = Budovy.Velkost_budovy;


            int ret = mDatabase.Update(command);
            mDatabase.Close();
            return ret;
        }

        public void PrepareCommand(OracleCommand command, Budovy Budovy)
        {
            command.Parameters.Add(new OracleParameter(":" + Budovy.ATTR_id_budovy, OracleDbType.Varchar2, Budovy.ATTR_id_budovy.Length));
            command.Parameters[":" + Budovy.ATTR_id_budovy].Value = Budovy.ID_budovy;

            command.Parameters.Add(new OracleParameter(":" + Budovy.ATTR_Adresa_budovy, OracleDbType.Varchar2, Budovy.ATTR_Adresa_budovy.Length));
            command.Parameters[":" + Budovy.ATTR_Adresa_budovy].Value = Budovy.Adresa_budovy;

            command.Parameters.Add(new OracleParameter(":" + Budovy.ATTR_Typ_budovy, OracleDbType.Varchar2));
            command.Parameters[":" + Budovy.ATTR_Typ_budovy].Value = Budovy.Typ_budovy;

            command.Parameters.Add(new OracleParameter(":" + Budovy.ATTR_Velkost_budovy, OracleDbType.Varchar2));
            command.Parameters[":" + Budovy.ATTR_Velkost_budovy].Value = Budovy.Velkost_budovy;
        }

        public Collection<Budovy> Select()
        {
            mDatabase.Connect();
            OracleCommand command = mDatabase.CreateCommand(SQL_SELECT);
            OracleDataReader reader = mDatabase.Select(command);

            Collection<Budovy> Budovys = Read(reader);
            reader.Close();
            mDatabase.Close();
             
            return Budovys;
        }

        /**
         * Select the record.
         **/
        public Budovy Select(String id_budovy)
        {
            mDatabase.Connect();
            OracleCommand command = mDatabase.CreateCommand(SQL_SELECT_ID_budovy);

            command.Parameters.Add(new OracleParameter(":" + Budovy.ATTR_id_budovy,  OracleDbType.Varchar2));
            command.Parameters[":" + Budovy.ATTR_id_budovy].Value = id_budovy;
            OracleDataReader reader = mDatabase.Select(command);

            Collection<Budovy> Budovys = Read(reader);
            Budovy Budovy1 = null;
            if (Budovys.Count == 1)
            {
                Budovy1 = Budovys[0];
            }
            reader.Close();
            mDatabase.Close();
            return Budovy1;
        }

        private Collection<Budovy> Read(OracleDataReader reader)
        {
            Collection<Budovy> Budovys = new Collection<Budovy>();

            while (reader.Read())
            {
                Budovy Budovy = new Budovy();
                Budovy.ID_budovy = reader.GetString(0);
                Budovy.Adresa_budovy = reader.GetString(1);
                Budovy.Typ_budovy = reader.GetString(2);
                Budovy.Velkost_budovy = reader.GetString(3);
                Budovys.Add(Budovy);
            }
            return Budovys;
        }

        /**
         * Delete the record.
         */
        public int Delete(String id_budovy)
        {
            mDatabase.Connect();
            OracleCommand command = mDatabase.CreateCommand(SQL_DELETE);

            command.Parameters.Add(new OracleParameter(":" + Budovy.ATTR_Adresa_budovy,             OracleDbType.Varchar2));
            command.Parameters[":" + Budovy.ATTR_Adresa_budovy].Value = id_budovy;
            int ret = mDatabase.Delete(command);
            mDatabase.Close();
            return ret;
        }

    }
}


V Asp stranke som dal vytvorit novy data source objekt a naklikal som tam tie metody. Ked dam watch na reader tak mi pise null . Takisto aj na Budovys. Dik za rady.
Lekvár je produkt šialenej myšlienky ako neurobiť zo všetkých sliviek slivovicu.[CZ] Povidla jsou produkt šílený myšlenky jak neudelat ze všech švestek slivovici.
sejnt
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 27. 11. 2011 22:36

A co je mDatabase?
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod sejnt 27. 11. 2011 22:42

Kód: Vybrat vše
using System;
using System.Collections.Generic;
using System.Text;

namespace AspNetExampleApp.Database
{
    public class DbTable
    {
        internal static Database mDatabase;
        protected String mTableName;

        static DbTable()
        {
            mDatabase = new Database();
        }

        public DbTable(String tableName)
        {
            mTableName = tableName;
        }

        internal static void SetDatabase(Database db)
        {
            mDatabase = db;
        }
        internal static Database GetDatabase()
        {
            return mDatabase;
        }

        public String GetTableName()
        {
            return mTableName;
        }
    }
}


Kód: Vybrat vše
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using Oracle.DataAccess.Client;
using System.Web.Configuration;
using System.Data;

//zmente si login

namespace AspNetExampleApp.Database
{
    public class Database
    {
        // private static int TIMEOUT = 240;
        private OracleConnection mConnection = new OracleConnection();
        uint mConnectNumber = 0;
        bool mTransactionFlag = false;
        OracleTransaction mSqlTransaction;
        private String mLanguage = "en";
        private static String CONNECTION_STRING = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=xe)));User Id=system;Password=***;";


        //public AutomechaniciTable AutomechaniciTable;
        public BudovyTable BudovyTable;

        public Database()
        {
            DbTable.SetDatabase(this);
            mConnection = new OracleConnection();

            //AutomechaniciTable = new AutomechaniciTable();
            BudovyTable = new BudovyTable();
        }

        /**
         * Connect.
         **/
        public bool Connect(String conString)
        {
            if (!mTransactionFlag)
            {
                mConnectNumber++;
            }
            if (mConnection.State != System.Data.ConnectionState.Open)
            {
                mConnection.ConnectionString = conString;
                mConnection.Open();
            }
            return true;
        }

        /**
         * Connect.
         **/
        public bool Connect()
        {
            bool ret = true;

            if (mConnection.State != System.Data.ConnectionState.Open)
            {
                ret = Connect(CONNECTION_STRING);
                // ret = Connect(WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            }
            else if (!mTransactionFlag)
            {
                mConnectNumber++;
            }

            return ret;
        }

        /**
         * Close.
         **/
        public bool Close()
        {
            if (!mTransactionFlag)
            {
                if (mConnectNumber > 0)
                {
                    mConnectNumber--;
                }
            }

            if (mConnectNumber == 0)
            {
                mConnection.Close();
            }
            return true;
        }

        /**
         * Begin a transaction.
         **/
        public void BeginTransaction()
        {
            mSqlTransaction = mConnection.BeginTransaction(IsolationLevel.Serializable);
            mTransactionFlag = true;
        }

        /**
         * End a transaction.
         **/
        public void EndTransaction()
        {
            // command.Dispose()
            mSqlTransaction.Commit();
            mTransactionFlag = false;
            mConnection.Close();
            Close();
        }

        /**
         * If a transaction is failed call it.
         **/
        public void Rollback()
        {
            mSqlTransaction.Rollback();
        }

        /**
         * Update a record encapulated in the command.
         **/
        public int Update(OracleCommand command)
        {
            int rowNumber = 0;
            try
            {
                command.Prepare();
                rowNumber = command.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                Close();
            }
            return rowNumber;
        }

        /**
         * Insert a record encapulated in the command.
         **/
        public int Insert(OracleCommand command)
        {
            int rowNumber = 0;
            try
            {
                command.Prepare();
                rowNumber = command.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                Close();
            }
            return rowNumber;
        }

        /**
         * Create command.
         **/
        public OracleCommand CreateCommand(string strCommand)
        {
            OracleCommand command = new OracleCommand(strCommand, mConnection);

            if (mTransactionFlag)
            {
                command.Transaction = mSqlTransaction;
            }
            return command;
        }

        /**
         * Select encapulated in the command.
         **/
        public OracleDataReader Select(OracleCommand command)
        {
            command.Prepare();
            OracleDataReader sqlReader = command.ExecuteReader();
            return sqlReader;
        }

        /**
         * Delete encapulated in the command.
         **/
        public int Delete(OracleCommand command)
        {
            int rowNumber = 0;
            try
            {
                command.Prepare();
                rowNumber = command.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                Close();
            }
            return rowNumber;
        }

        public String Language
        {
            get
            {
                return mLanguage;
            }
            set
            {
                mLanguage = value;
            }
        }
    }
}

Lekvár je produkt šialenej myšlienky ako neurobiť zo všetkých sliviek slivovicu.[CZ] Povidla jsou produkt šílený myšlenky jak neudelat ze všech švestek slivovici.
sejnt
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 27. 11. 2011 22:52

A jak se to teda snažíš zapojit do toho Gridu?
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod sejnt 27. 11. 2011 22:55

Kód: Vybrat vše
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Budovy.aspx.cs" Inherits="Default2" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <asp:GridView ID="GridView1" runat="server" AllowPaging="True"
    AutoGenerateColumns="False" DataSourceID="Budovy">
        <Columns>
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True"
                ShowSelectButton="True" />
            <asp:BoundField DataField="ID_budovy" HeaderText="ID_budovy"
                SortExpression="ID_budovy" />
            <asp:BoundField DataField="Adresa_budovy" HeaderText="Adresa_budovy"
                SortExpression="Adresa_budovy" />
            <asp:BoundField DataField="Typ_budovy" HeaderText="Typ_budovy"
                SortExpression="Typ_budovy" />
            <asp:BoundField DataField="Velkost_budovy" HeaderText="Velkost_budovy"
                SortExpression="Velkost_budovy" />
        </Columns>
    </asp:GridView>
<asp:ObjectDataSource ID="Budovy" runat="server"
    DataObjectTypeName="AspNetExampleApp.Database.Budovy" DeleteMethod="Delete"
    InsertMethod="Insert" SelectMethod="Select"
    TypeName="AspNetExampleApp.Database.BudovyTable" UpdateMethod="Update">
    <DeleteParameters>
        <asp:Parameter Name="id_budovy" Type="String" />
    </DeleteParameters>
</asp:ObjectDataSource>
</asp:Content>
Lekvár je produkt šialenej myšlienky ako neurobiť zo všetkých sliviek slivovicu.[CZ] Povidla jsou produkt šílený myšlenky jak neudelat ze všech švestek slivovici.
sejnt
Junior
Uživatelský avatar

Odeslat příspěvekod sejnt 28. 11. 2011 12:43

Problem vyrieseny !daval som zly data source :(.
Lekvár je produkt šialenej myšlienky ako neurobiť zo všetkých sliviek slivovicu.[CZ] Povidla jsou produkt šílený myšlenky jak neudelat ze všech švestek slivovici.
sejnt
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků