|
c# c#
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
seesharp Administrator foruma
Pridružen/-a: 27.06. 2017, 18:40 Prispevkov: 43
|
Objavljeno: 28 Jun 2017 12:31 Naslov sporočila: Vaja 12 - ORM - vozila |
|
|
Vaja 12 - ORM - vozila
Izdelajte aplikacijo, ki bo preko uporabe knjižnice Nhibernate omogočala izvedbo osnovnih
operacij s podatkovno bazo MySQL. Z ORM pristopom napravite razred (entiteto) Car, ki se
v podatkovni bazi interpretira kot tabela Vozilo, ki vsebuje naslednje 4 stolpce: Id (primarni
ključ), Znamka (string), Model (string), Letnik (int). S pritiskom na gumb Init_DB se v
podatkovni bazi ustvari tabela Vozilo. S pritiskom na gumb Del_DB se v podatkovni bazi
izbriše tabela Vozilo. Gumb Vnos omogoči nov zapis v tabelo. Iskanje preko stolpca Znamka
se izvrši ob pritisku na gumb Isci. Popravek podatkov (Model, Letnik) glede na izbrano
Znamko se izvrši ob pritisku na gumb Osvezi. Gumb Brisi izbrise izbrano vrstico (izbira po
stolpcu Znamka) iz tabele. |
|
Nazaj na vrh |
|
|
seesharp Administrator foruma
Pridružen/-a: 27.06. 2017, 18:40 Prispevkov: 43
|
Objavljeno: 28 Jun 2017 12:32 Naslov sporočila: |
|
|
Form1.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;
using NHibernate.Cfg;
using NHibernate.Mapping.Attributes;
using NHibernate;
using NHibernate.Tool.hbm2ddl;
using vaja12.Entity;
namespace vaja12
{
public partial class Form1 : Form
{
private ISessionFactory m_SessionFactory = null;
private ISession m_Session = null;
public Form1()
{
InitializeComponent();
ConfigureLog4Net();
ConfigureNHibernate(false);
}
private void ConfigureLog4Net()
{
log4net.Config.XmlConfigurator.Configure();
}
private void ConfigureNHibernate(bool bDrop)
{
Configuration config = new Configuration();
config.Configure();
HbmSerializer.Default.Validate = true;
config.AddInputStream(HbmSerializer.Default.Serialize(System.Reflection.Assembly.GetExecutingAssembly()));
config.AddAssembly(typeof(Car).Assembly);
new SchemaExport(config).Execute(true, true, bDrop);
m_SessionFactory = config.BuildSessionFactory();
m_Session = m_SessionFactory.OpenSession();
}
private void ResetSession()
{
m_Session.Close();
m_Session.Dispose();
m_Session = m_SessionFactory.OpenSession();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btInitDB_Click(object sender, EventArgs e)
{
ConfigureNHibernate(false);
}
private void btDelDB_Click(object sender, EventArgs e)
{
ConfigureNHibernate(true);
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
m_Session.Close();
m_Session.Dispose();
m_SessionFactory.Close();
m_SessionFactory.Dispose();
}
//Insert:
private void btVnos_Click(object sender, EventArgs e)
{
try
{
ITransaction tx = m_Session.BeginTransaction();
Car d = new Car();
d.Znamka = tbZnamka.Text;
d.Model = tbModel.Text;
d.Letnik = Int32.Parse(tbLetnik.Text);
m_Session.Save(d);
tx.Commit();
tbOutput.Text = "Insert Succeded!";
}
catch (Exception ex)
{
tbOutput.Text = ex.Message;
ResetSession();
}
}
//Select:
private void btIsci_Click(object sender, EventArgs e)
{
try
{
ITransaction tx = m_Session.BeginTransaction();
IQuery query = m_Session.CreateQuery("from Car d where d.Znamka = ?");
Car res = query.SetString(0, tbZnamka.Text).UniqueResult<Car>();
tx.Commit();
tbOutput.Text = "Found: " + System.Environment.NewLine + "Brand: " + res.Znamka
+ System.Environment.NewLine + "Model: " + res.Model
+ System.Environment.NewLine + "Year: " + res.Letnik;
}
catch (Exception ex)
{
tbOutput.Text = ex.Message;
ResetSession();
}
}
//Update:
private void btOsvezi_Click(object sender, EventArgs e)
{
try
{
ITransaction tx = m_Session.BeginTransaction();
IQuery query = m_Session.CreateQuery("from Car d where d.Znamka = ?");
Car res = query.SetString(0, tbZnamka.Text).UniqueResult<Car>();
res.Model = tbModel.Text;
res.Letnik = Int32.Parse(tbLetnik.Text);
m_Session.Update(res);
tx.Commit();
tbOutput.Text = "Updated: " + System.Environment.NewLine + "Brand: " + res.Znamka
+ System.Environment.NewLine + "Model: " + res.Model
+ System.Environment.NewLine + "Year: " + res.Letnik;
}
catch (Exception ex)
{
tbOutput.Text = ex.Message;
ResetSession();
}
}
//Delete:
private void btBrisi_Click(object sender, EventArgs e)
{
try
{
ITransaction tx = m_Session.BeginTransaction();
IQuery query = m_Session.CreateQuery("from Car d where d.Znamka = ?");
Car res = query.SetString(0, tbZnamka.Text).UniqueResult<Car>();
m_Session.Delete(res);
tx.Commit();
tbOutput.Text = "Deleted: " + System.Environment.NewLine + "Brand: " + res.Znamka
+ System.Environment.NewLine + "Model: " + res.Model
+ System.Environment.NewLine + "Year: " + res.Letnik;
}
catch (Exception ex)
{
tbOutput.Text = ex.Message;
ResetSession();
}
}
}
} |
|
Nazaj na vrh |
|
|
seesharp Administrator foruma
Pridružen/-a: 27.06. 2017, 18:40 Prispevkov: 43
|
Objavljeno: 28 Jun 2017 12:32 Naslov sporočila: |
|
|
Cars.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NHibernate.Mapping.Attributes;
namespace vaja12.Entity
{
[Serializable] //[...] = anotacije
[Class(Schema = "test", Table = "Vozilo", NameType = typeof(Car))]
class Car
{
[Id(Name = "Id", Column = "ID", Type = "int"), Generator(1, Class = "native")]
public virtual int Id { get; set; } //lazy loading
[Property(Column = "Brand", Type = "string", NotNull =true, Length = 128, Unique =true)]
public virtual string Znamka { get; set; }
[Property(Column = "Model", Type = "string", NotNull = true, Length = 512)]
public virtual string Model { get; set; }
[Property(Column = "Year", Type = "int")]
public virtual int Letnik { get; set; }
}
} |
|
Nazaj na vrh |
|
|
seesharp Administrator foruma
Pridružen/-a: 27.06. 2017, 18:40 Prispevkov: 43
|
Objavljeno: 28 Jun 2017 12:37 Naslov sporočila: |
|
|
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 |
|
|
|
|
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
|
|