Ne, ne bi smio. Zapravo, napravi jednostavnu formu s jednim text-boxom i gumbom i dodaj ovo:
private void button1_Click( object sender, EventArgs e )
{
float f = float.Parse(textBox1.Text);
}
Postavi onda breakpoint na zatvorenu vitičastu zagradu i pogledaj vrijednost varijable f kada se debugger zaustavi. Dobit ćeš što treba ako upišeš sa zarezom.
Pogreška o kojoj ti govoriš je pogreška koju ti javi SQL server. On to javlja zato što ne koristiš parametrizirani upit, ovako
PARAMETER p FLOAT;
SELECT polje1 FROM tablica WHERE polje2 = p;
već direktno kreiraš SQL tekst ovako:
string SQL = "SELECT polje1 FROM tablica WHERE polje2 = " + f;
U tom slučaju ti C# implicitno dobro zapisani broj 0.55 natrag pretvori u tekstualni prikaz, ali ponovo u skladu s regionalnim postavkama, pa dobiješ ovakav string:
SELECT polje1 FROM tablica WHERE polje2 = 0,55
Naravno, ovaj string je izvorni programski kod za SQL server i on ga očekuje zapisanog u skladu sa sintaksnim pravilima tog jezika koji - slično kao i C# - očekuje da su literalne brojčane konstante zapisane s točkom, ovako:
SELECT polje1 FROM tablica WHERE polje2 = 0.55
Pogreška koju dobijaš je pogreška pri kompajliranju SQL naredbe, slična kao i ona koji bi dobio od C#-a prilikom kompajliranja slijedećeg isječka programskog koda:
float f = 0,55;
Uglavnom, sve možeš provjeriti koristeći debugger.
[hr][/hr]
Kada imaš problem kojeg ne možeš uhvatiti, implementaciju algoritma rastavi preko što više varijabli i onda debuggerom proučavaj međurezultate koji se pojavljuju u varijablama Znači, nemoj ovo:
SqlCommand command = new SqlCommand("SELECT polje1 FROM tablica WHERE polje2 = " + f);
Umjesto toga, ovo:
string strSQL = "SELECT polje1 FROM tablica WHERE polje2 = " + f;
SqlCommand command = new SqlCommand(strSQL);
Tako bi koračajući kroz naredbe gledao stanja varijabli i brzo otkrio gdje je problem.
Također kreni malo i odavde:
http://msdn.microsoft.com/en-us/library/yy6y35y8.aspx