Jak to mám zatím doteď...
Mám vytvořenou MySQL DB
ID - nějaké pořadové číslo uživatele
jmeno - Jméno uživatele
konst1 - konstanta jedna (double)
konst2 - konstanta dvě (double)
konst3 . konstanta tři (double)
Pak mám v c# vytvořené 2 okna.
první okno slouží pouze k získání konstant od konkrétního uživatele
druhé okno pak s těmito konstanty bude pracovat.
Postup jedna:
řešil jsem pomocí konstruktoru:
kód byl asi takový:
Kód: Vybrat vše
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace ET
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btn_connectMySQL_Click(object sender, EventArgs e) // Button pro otevření pracovního okna
{
try
{
string constring= "datasource=localhost;port=3306;username=" + txt_Username.Text + ";password=114sdf56df464f12r3a487gjg5411";
MySqlConnection conDataBase = new MySqlConnection(constring);
MySqlCommand conDataBase = string conDataBase = new MySqlCommand(" select jmeno, konst1, konst2, konst3 from uzivatele.info where jmeno='" + txt_Username.Text + "; conDataBase);
MySqlDataReader Reader;
conDataBase .Open();
string Uzivatel = Reader.GetString("jmeno");
double konstanta1= Convert.ToInt32(Reader.GetDouble("konst1"));
double konstanta2= Convert.ToInt32(Reader.GetDouble("konst2"));
double konstanta3= Convert.ToInt32(Reader.GetDouble("konst3"));
this.Hide();
Form2 form_work = new Form2(Uzivatel, konstanta1, konstanta2, konstanta3);
form_work.ShowDialog();
conDataBase .Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
do druhého pak stačilo zapsat jen toto:
Kód: Vybrat vše
public Form2(string Uzivatel, double konstanta1, double konstanta2, double konstanta3)
{
InitializeComponent();
// Pracovat s uživatelem a konstantou jde pouze zde, nikde jinde ve formuláři
například: label1.text = Uzivatel; atd...
}
jednoduhý pomocí konstruktoru, ale nepoužitelný pro celý formulář.
tak jsem se pustil do
Properties, tedy přes to get set
něco takového vytvořím pro všechny 4 proměnné (uživatel a 3 konstanty...)
Kód: Vybrat vše
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btn_connectMySQL_Click(object sender, EventArgs e) // Button pro otevření pracovního okna
{
try
{
string constring= "datasource=localhost;port=3306;username=" + txt_Username.Text + ";password=114sdf56df464f12r3a487gjg5411";
MySqlConnection conDataBase = new MySqlConnection(constring);
MySqlCommand conDataBase = string conDataBase = new MySqlCommand(" select jmeno, konst1, konst2, konst3 from uzivatele.info where jmeno='" + txt_Username.Text + "; conDataBase);
MySqlDataReader Reader;
conDataBase .Open();
string Uzivatel = Reader.GetString("jmeno");
double konstanta1= Convert.ToInt32(Reader.GetDouble("konst1"));
double konstanta2= Convert.ToInt32(Reader.GetDouble("konst2"));
double konstanta3= Convert.ToInt32(Reader.GetDouble("konst3"));
this.Hide();
Form2 form_work = new Form2();
form_work.Uzivatel = Username; atd.. + ty 3 konstanty
form_work.ShowDialog();
conDataBase .Close();
a do druhého okna jsem to přenesl takto:
Kód: Vybrat vše
public partial class Form2 : Form
{
public string Username
{
set { label1.Text = value; }
}
Stále to mám zapsané jako v prvním případě, tedy do komponenty se kterou pak pracuji dále. Zápis do komponenty není správný. Pokud stisknu jiné tlačítko na druhém formu, tak prostě udělám to, že získám údaje z toho label1 což je špatný postup. funkční, ale špatně.
U get set řeším zatím to, že se label načte až jako poslední ve Form2. nebo mi to tak připadá, protože když ho zkusím hned nadefinovat k připojení k DB z Form2, tak to hodí error.
hlavně bych pak rád druhý form propojil s další DB. z té první si uživatel přenese základní informace potřebné jednak ke spojení s jeho přidělenou DB a pak mimo jiné ty unikátní konstanty.
webwalker: kouknu na to.