.NET > Obecné

try - catch

<< < (3/4) > >>

erdt.martin:

--- Kód: C++ ---using System;using System.Collections.Generic;using System.Linq;using System.Text;using MySql.Data;using MySql.Data.MySqlClient; namespace GeoCode_A_MySQL{    class VytvoreniSloupeckuDoDB    {        public void VytvorSloupeckyDoDB(string sJmenoDB, string sDataSource, string sUzivatel, string sHeslo, string sNazevSloupecku)        {            MySqlCommand prikaz = new MySqlCommand();            MySqlConnection pripojeni = new MySqlConnection("Database=" + sJmenoDB + ";DataSource=" + sDataSource + ";UserId="                                                          + sUzivatel + ";Password=" + sHeslo);            pripojeni.Open();             prikaz.CommandText = "ALTER TABLE firma ADD `" + sNazevSloupecku + "` DOUBLE NULL DEFAULT NULL; ";            prikaz.Connection = pripojeni;            prikaz.ExecuteNonQuery();            pripojeni.Close();        }    }}  

Mi.Chal.:
No a kde máš tu kontrolu na existenci sloupečku přes information schema, jak jsem ti už psal? Něco jako


--- Kód: MySQL ---IF NOT EXISTS(SELECT * FROM information_schema.COLUMNS WHERE COLUMN_NAME='colname' AND TABLE_NAME='tablename')ALTER TABLE tablename ADD COLUMN colname double 

erdt.martin:

--- Citace: Mi.Chal.  27-07-2012, 23:23:08 ---No a kde máš tu kontrolu na existenci sloupečku přes information schema, jak jsem ti už psal? Něco jako


--- Kód: MySQL ---IF NOT EXISTS(SELECT * FROM information_schema.COLUMNS WHERE COLUMN_NAME='colname' AND TABLE_NAME='tablename')ALTER TABLE tablename ADD COLUMN colname double 
--- Konce citace ---

No prave nemam, kdyz mi to nefungovalo... zkusil jsem to a skoncilo to vyjimkou

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXISTS(SELECT * FROM information_schema.COLUMNS WHERE COLUMN_NAME='GPSx' ' at line 1"

kod jsem upravil tedy takto:

--- Kód: MySQL --- public void VytvorSloupeckyDoDB(string sJmenoDB, string sDataSource, string sUzivatel, string sHeslo, string sNazevSloupecku)        {            MySqlCommand prikaz = new MySqlCommand();            MySqlConnection pripojeni = new MySqlConnection("Database=" + sJmenoDB + ";DataSource=" + sDataSource + ";UserId="                                                          + sUzivatel + ";Password=" + sHeslo);            pripojeni.Open();             prikaz.CommandText = "IF NOT EXISTS(SELECT * FROM information_schema.COLUMNS WHERE COLUMN_NAME='GPSx' AND TABLE_NAME='firma') ALTER TABLE firma ADD COLUMN GPSx double";            prikaz.Connection = pripojeni;            prikaz.ExecuteNonQuery();            pripojeni.Close();        } 
db mam vytvorenou takto:

--- Kód: MySQL ---CREATE TABLE `firma` (        `ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,        `Nazev` TEXT NULL COLLATE 'utf8_czech_ci',        `Adresa` TEXT NULL COLLATE 'utf8_czech_ci',        `GPSy` DOUBLE NULL DEFAULT NULL,        `GPSx` DOUBLE NULL DEFAULT NULL,        `Accuracy` DOUBLE NULL DEFAULT NULL,        PRIMARY KEY (`ID`))COLLATE='utf32_czech_ci'ENGINE=InnoDBAUTO_INCREMENT=3; 
ty sloupcecky GPSx, GPSy, Accuracy tam byt nemusi, proto zkousim ten prikaz IF NOT...

Mi.Chal.:
tak se podívej do dokumentace, jak se to přesně píše. V tom vlákně na stackoverflow to píšou ve tvaru if ... then ... end if, třeba to Parodie jinak nevezme

pak tam ještě psali, že information schema je podporované až od nějaké verze, na starších to nepůjde

erdt.martin:
Mam posledni verzi MySql... tak nevim no... To nevadi, toto funguje take dobre zatim :) I kdyz je to prasarna... Samozrejme, budu hledat reseni dal a pokud neco najdu, dam to sem pro ostatni, co se placaji s MySql :)

Navigace

[0] Seznam témat

[#] Další strana

[*] Předchozí strana

Přejít na plnou verzi