c# Seznam forumov c#
c#
 
 Pogosta vprašanjaPogosta vprašanja   IščiIšči   Seznam članovSeznam članov   Skupine uporabnikovSkupine uporabnikov   RSS Feed   Registriraj seRegistriraj se 
 Tvoj profilTvoj profil   Zasebna sporočilaZasebna sporočila   PrijavaPrijava 




Vaja 13 – ORM - login + datagridview edit

 
Objavi novo temo   Odgovori na to temo    c# Seznam forumov -> iseesharp
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
seesharp
Administrator foruma


Pridružen/-a: 27.06. 2017, 18:40
Prispevkov: 43

PrispevekObjavljeno: 28 Jun 2017 12:39    Naslov sporočila: Vaja 13 – ORM - login + datagridview edit Odgovori s citatom

Vaja 13 – ORM - login + datagridview edit
Izdelajte aplikacijo, ki bo preko uporabe knjižnice Nhibernate omogočala urejanje tabele
uporabnikov v podatkovni bazi MySQL. Z ORM pristopom napravite razred (entiteto) Users,
ki se v podatkovni bazi interpretira kot tabela Uporabnik, in vsebuje naslednje 3 stolpce: Id
(primarni ključ), Ime (string), Geslo (string). Pri zagonu aplikacije se najprej prikaže okno za
avtorizacijo (1). S pritiskom na gumb Login se izvede preverjanje/primerjava podatkov v
tabeli Uporabnik. Ob uspešni primerjavi se prikaže glavno okno (2), ki pa vsebuje samo meni
Users za urejanje tabele. Ob izbiri menija se prikaže novo okno (3), ki vsebuje gradnik
datagridview, ki je povezan posredno s tabelo preko razreda BindingSource, ki omogoča, da
se spremembe (dodajanje, brisanje, spreminjanje) na gradniku odražajo s spremembami v
tabeli. S pritiskom na gumb Done se okno zapre in se vrnemo v glavno okno.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
seesharp
Administrator foruma


Pridružen/-a: 27.06. 2017, 18:40
Prispevkov: 43

PrispevekObjavljeno: 28 Jun 2017 12:40    Naslov sporočila: Odgovori s citatom

dodamo dateoteke:
log4net.dll
MySql.Data.dll
NHibernate.Mapping.Attribute.dll
NHibebernate.dll
lesi.Collection.dll
nhibernate-configuration.xsd
nhibernate-mapping.xsd

v datoteko
App.Config
dodamo:


<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MySQLDialect</property>
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<property name="use_proxy_validator">true</property>
<property name="connection.connection_string">Server=localhost;Database=test;User ID=root;Password=;Port=3306</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>

<log4net>
<appender name="DebugSQL" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="HibernateLogFile" type="log4net.Appender.RollingFileAppender">
<file value="hibernate_log.txt"/>
<appendToFile value="false"/>
<encoding value="utf-8"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline"/>
</layout>
</appender>

<appender name="HibernateSQLLogFile" type="log4net.Appender.RollingFileAppender">
<file value="hibernateSQL_log.txt"/>
<appendToFile value="false"/>
<encoding value="utf-8"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline"/>
</layout>
</appender>

<!--
<root>
<level value="DEBUG" />
<appender-ref ref="DebugSQL" />
</root>
-->

<logger name="NHibernate">
<level value="DEBUG" />
<appender-ref ref="HibernateLogFile" />
</logger>

<logger name="NHibernate.SQL">
<level value="DEBUG" />
<appender-ref ref="HibernateSQLLogFile" />
</logger>

</log4net>
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
seesharp
Administrator foruma


Pridružen/-a: 27.06. 2017, 18:40
Prispevkov: 43

PrispevekObjavljeno: 28 Jun 2017 12:41    Naslov sporočila: Odgovori s citatom

entiteta
Users.cs


using NHibernate.Mapping.Attributes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace vaja13ormLoginEdit.Entity
{
[Serializable] //[...] = anotacije
[Class(Schema = "test", Table = "Uporabnik", NameType = typeof(Users))]

class Users
{

[Id(Name = "Id", Column = "ID", Type = "int"), Generator(1, Class = "native")]

public virtual int Id { get; set; } //lazy loading

[Property(Column = "Ime", Type = "string", NotNull = true, Length = 128, Unique = true)]
public virtual string Name { get; set; }

[Property(Column = "Geslo", Type = "string", NotNull = true, Length = 512)]
public virtual string Pass { get; set; }


}
}
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
seesharp
Administrator foruma


Pridružen/-a: 27.06. 2017, 18:40
Prispevkov: 43

PrispevekObjavljeno: 28 Jun 2017 12:42    Naslov sporočila: Odgovori s citatom

razred:
Login.cs


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace vaja13ormLoginEdit
{
public partial class Login : Form
{
public Login()
{
InitializeComponent();
}

private void label1_Click(object sender, EventArgs e)//brisi!!!
{

}
}
}
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
seesharp
Administrator foruma


Pridružen/-a: 27.06. 2017, 18:40
Prispevkov: 43

PrispevekObjavljeno: 28 Jun 2017 12:42    Naslov sporočila: Odgovori s citatom

Edit.cs


using NHibernate;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using vaja13ormLoginEdit.Entity;


namespace vaja13ormLoginEdit
{
public partial class Edit : Form
{
private ISessionFactory m_SessionFactory = null;
private ISession m_Session = null;
private IList<Users> _users;
private BindingSource _bs;


public Edit()
{
InitializeComponent();
dataGridView1.AllowUserToAddRows = true;

}//edit

public void SetNhib(ISessionFactory isf, ISession iss)
{
m_SessionFactory = isf;
m_Session = iss;
}



private void dataGridView1_AllowUserToAddRowsChanged(object sender, EventArgs e)
{

}//odstrani!!

private void l(object sender, EventArgs e)
{

}//odstrani!!

private void Edit_Load(object sender, EventArgs e)
{
_users = m_Session.CreateCriteria(typeof(Users)).List<Users>();
_bs = new BindingSource();
_bs.DataSource = _users;
_bs.AllowNew = true;
dataGridView1.DataSource = _bs;
_bs.ListChanged += new System.ComponentModel.ListChangedEventHandler(bs_ListChanged);

}//edit_load

void bs_ListChanged(object sender, System.ComponentModel.ListChangedEventArgs e)
{
switch (e.ListChangedType)
{
case ListChangedType.ItemChanged:
{
using (ITransaction tx = m_Session.BeginTransaction())
{
Users new_user = (Users)(_bs.List[e.NewIndex]);
if (new_user.Name == null)
new_user.Name = "";
if (new_user.Pass == null)
new_user.Pass = "";
m_Session.Save(new_user);
tx.Commit();
}
break;
}

}
}

private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
using (ITransaction tx = m_Session.BeginTransaction())
{
Users new_user = (Users)(e.Row.DataBoundItem);

m_Session.Delete(new_user);
tx.Commit();
}
}
}
}
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
seesharp
Administrator foruma


Pridružen/-a: 27.06. 2017, 18:40
Prispevkov: 43

PrispevekObjavljeno: 28 Jun 2017 12:45    Naslov sporočila: Odgovori s citatom

Form1.cs

using NHibernate;
using NHibernate.Cfg;
using NHibernate.Mapping.Attributes;
using NHibernate.Tool.hbm2ddl;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using vaja13ormLoginEdit.Entity;

namespace vaja13ormLoginEdit
{
public partial class Form1 : Form
{

private ISessionFactory m_SessionFactory = null;
private ISession m_Session = null;
private Login fLogin;
private Edit fEdit;

public Form1()
{
InitializeComponent();

ConfigureLog4Net();
ConfigureNHibernate(false);
Login();


}

private void initUser()
{
try
{
ITransaction tx = m_Session.BeginTransaction();
Users usr = new Users();
usr.Name = "test";
usr.Pass = "test";
m_Session.Save(usr);
tx.Commit();
}
catch (Exception ex)
{

ResetSession();
}

}

private void Login()
{
//login
int count = 3;
fLogin = new Login();
if (fLogin.IsDisposed)
fLogin = new Login();

while (count>0)
{
if (fLogin.ShowDialog() == DialogResult.OK)
{
if (CheckUser(fLogin.Controls["tb_user"].Text, fLogin.Controls["tb_pass"].Text))
{
count = -1;
this.Text = "User: " + fLogin.Controls["tb_user"].Text;
}
else
{
MessageBox.Show("Wrong data, Please retry!");
count--;
}
}
}
fLogin.Dispose();
if (count == 0)
System.Environment.Exit(0);
}//login

private bool CheckUser(string user, string pass)
{
bool result = false;
try
{
ITransaction tx = m_Session.BeginTransaction();
IQuery query = m_Session.CreateQuery("from Users d where d.Name = ?");
Users res = query.SetString(0, user).UniqueResult<Users>();
tx.Commit();
if (res != null && res.Pass.Equals(pass))
result = true;
}
catch (Exception ex)
{
ResetSession();
}
return result;
}//check user

private void usersToolStripMenuItem_Click(object sender, EventArgs e)
{
fEdit = new Edit();
fEdit.SetNhib(m_SessionFactory, m_Session);
fEdit.ShowDialog();
} //usersToolStripMenuItem_Click

private void ConfigureLog4Net()
{
log4net.Config.XmlConfigurator.Configure();

}//ConfigureLog4Net


private void ConfigureNHibernate(bool bDrop)
{
Configuration config = new Configuration();
config.Configure();
HbmSerializer.Default.Validate = true;
config.AddInputStream(HbmSerializer.Default.Serialize(System.Reflection.Assembly.GetExecutingAssembly()));
//ustvarimo novo tabelo ():

config.AddAssembly(typeof(Users).Assembly);
new SchemaExport(config).Execute(true, true, bDrop);


m_SessionFactory = config.BuildSessionFactory();
m_Session = m_SessionFactory.OpenSession();

initUser(); //zakomentiramo po prvem zagonu

} //ConfigureNHibernate


private void ResetSession()
{
m_Session.Close();
m_Session.Dispose();
m_Session = m_SessionFactory.OpenSession();
}





}//form
}//namespace
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    c# Seznam forumov -> iseesharp Časovni pas GMT + 1 ura, srednjeevropski - zimski čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu


MojForum.si - brezplačno gostovanje forumov. Powered by phpBB 2.