Dobré odpoledne.
Mám tento kód:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using MySql.Data;
using MySql.Data.MySqlClient;
namespace school
{
public partial class _Default : System.Web.UI.Page
{
/*string pro navazani spojeni*/
private static string spojeni = @"Database=test;DataSource=127.0.0.1;UserId=root;Password=W1nd";
/*string pro vytvoreni tabulky*/
private static string vytvoreni_tabulky = @"CREATE TABLE Kl (
Id, INT, NOT NULL, PRIMARY KEY, AUTO_INCREMENT;
Nazev, Varchar(40), NOT NULL;
Autor, Varchar(40), NOT NULL);";
/*string pro jednotlive prikazy*/
private static string prikaz = "";
/*třída *Connection pro navázání spojení*/
MySqlConnection connect = new MySqlConnection(spojeni);
/*třída Command pro vykonávání jednotlivých příkazů*/
MySqlCommand cmd;
protected void Page_Load(object sender, EventArgs e)
{
}
/*vytvoreni "hlavicky" tabulky*/
protected void Button1_Click(object sender, EventArgs e)
{
Label5.Text = "";
try
{
connect.Open();//navážu spojení
/*konstruktoru třídy MySqlCommand předám string s požadovaným příkazem +
*instanci třídy MySqlConnection*/
cmd = new MySqlCommand(vytvoreni_tabulky, connect);
cmd.ExecuteNonQuery();//vykonání příkazu
}
catch (Exception ex)//vyjímka typu Exception
{
Label5.Text = ex.Message;//zobrazím chybový stav daný číslem v errno
}
finally//závěrečný blok == provede se vždy
{
/*ukončím aktivní spojení - fci Close(); lze použít i v případě, že spojení nenavážu,
*k chybě nedojde*/
connect.Close();
Label5.Text = "Příkaz byl úspěšně proveden";//informuju uživatele o správném vykování příkazu
}
}
/*vlozeni zaznamu do DB*/
protected void Button2_Click(object sender, EventArgs e)
{
try
{
/*sestavení SQL příkazu*/
prikaz = @"INSERT INTO Kl (`Nazev`, `Autor`) VALUES ('ppp', 'saman')";
connect.Open();//navázání spojení
cmd = new MySqlCommand(prikaz, connect);
cmd.ExecuteNonQuery();//vykonání příkazu
}
catch (Exception ex)
{
Label5.Text = ex.Message;
}
finally
{
connect.Close();
Label5.Text = "Příkaz byl úspěšně proveden";
}
}
/*čtení z DB*/
protected void Button3_Click(object sender, EventArgs e)
{
prikaz = @"SELECT Autor, Nazev FROM Kl";
try
{
cmd = new MySqlCommand(prikaz, connect);
connect.Open();
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Label6.Text += reader[0].ToString() + ", " + reader[1].ToString() + ", " + reader[2].ToString();
}
}
catch (Exception ex)
{
Label5.Text = ex.Message;
}
finally
{
connect.Close();
Label5.Text = "Příkaz byl úspěšně proveden";
}
}
}
}
A mám s ním několik problémů. 1)Ve složce .\mysql\data\test se sice vytvoří požadovaná databáze Kl, ale jen jednou, pokud znova kliknu na button 1, tak se tato již vytvořená databáze nepřepíše - nyslel jsem, že k tomu aby se nepřepsala, bych musel mít místo CREATE TABLE Kl toto CREATE TABLE IF NOT EXISTS Kl - nebo to funguje jinak?
2)Nefunguje zápis do tabulky. IMHO bude chyba někde v syntaxi, ale dle toho, co je zde > http://dev.mysql.com/doc/refman/5.0/en/insert.html to mám dobře. Proč to tedy nefunguje?
3)Nejsem si jistý tím výpisem (čtením z DB), nemůžu zjistit, jestli funguje, ptž když do table nic nezapíšu, tak logicky nemůžu i nic číst.
Žádné vyjímky nenastávají, žádné chybové hlášky. Prosím o pomoc, už se s tím trápím celé odpoledne, vyzkoušel jsem všelijaké zápisy, ale prostě nic z toho mi nefunguje. Předem děkuji za pomoc.