Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
Borgson - 13-11-2006 00:46
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
Witam serdecznie.
Mam następujący problem i może ktoś z Was już się z tym sptokał.
Mam w bazie rekord który zawiera powiedzmy takie wartości :
/callcentreV4/payplanOctober2006-10-18\08009177829-1826049101.wav /callcentreV4/payplanOctober2006-10-18\08009177829-1826049122.wav /callcentreV4/payplanOctober2006-10-18\08009177829-1826049165.wav
Teraz problem, mam VBScript który pracuje na tych danych, gdy pobieram te dane z MySQL'a i chcę je wyświetlić w zwykłym oknie CMD wyświetla mi następujące dane :
/callcentreV4/payplanOctober2006-10-18 8009177829-1826049101.wav /callcentreV4/payplanOctober2006-10-18 08009177829-1826049122.wav /callcentreV4/payplanOctober2006-10-18 8009177829-1826049165.wav
Czyli tak jakby w miejsce '/0' pojawiła się ' '. Próbowałem nawet wykonać taki myk żeby zamienić ten jeden ukośnik '\' na '/' ponieważ tak naprawdę nie ma dla mnie znaczenia w którą stronę on jest, niestety przy próbie wykonania zamiany otrzymuję błąd :
d:\Logs\ww_logs.vbs(120, 3) Microsoft OLE DB Provider for ODBC Drivers: You have an error in your SQL syntax; check the manual that corresponds to your MySQL se rver version for the right syntax to use near '/callcentreV4/payplanOctober2006 -10-18' at line 1
Tak więc jak widać w miejscu gdzie jest /0 urywa się zapytanie :( Sprawdzałem np. to samo zapytanie w SQLYog, gdzie dawałem UPDATE ble ble ble i wszystko działa prawidłowo, problem pojawia się gdy chcę to zrobić poprzez VBScript albo przez ASP.
Czy ktoś może kiedyś się spotkał już z takim problemem i wie jak go obejść :(
Pozdrawiam, Piotr
Mariusz c - 13-11-2006 00:46
Borgson <mrquesti@wp.pl> napisał(a):
> Witam serdecznie. > > Mam nast=EApuj=B1cy problem i mo=BFe kto=B6 z Was ju=BF si=EA z tym sptoka= > =B3. > > Mam w bazie rekord kt=F3ry zawiera powiedzmy takie warto=B6ci : > > /callcentreV4/payplanOctober2006-10-18\08009177829-1826049101.wav > /callcentreV4/payplanOctober2006-10-18\08009177829-1826049122.wav > /callcentreV4/payplanOctober2006-10-18\08009177829-1826049165.wav >
Jedyne problemy jakie miałem, to opisane w dokumentacji MySQL'a znaki związane z budową zapytania, ale to mi załatwia taka prymitywna procedurka, która wkłada do danych zapytania (INSERT) właściwe znaki, nie zaburzając analizy składni przez parser. W bazie lądują juz natywne znaki, więc nie ma problemu z odczytem. //************************************************** ****************** Function PrepMysqlStr(si : String): String; var i: integer; begin Result:=si; if length(si)=0 then exit; Result:=''; for i:=1 to length(si) do begin case si[i] of #9:Result:=Result+'\t'; #10:Result:=Result+'\n'; #13:Result:=Result+'\r'; #39,'\':Result:=Result+'\'+si[i]; else Result:=Result+si[i]; end; end; end; //************************************************** ****************** W Twoim przypadku myślę, że jest tak: odczyt \0 daje Ci nie spację, ale znak o kodzie 0 - prawdopodobnie VB tak interpretuje sekwencję \0, a potem pewnie zamienia ją na spację przy wyświetlaniu. Z kolei ODBC, / i błąd składni - tu raczej wina ODBC - właśnie posprawdzałem to u mnie - sam znak slash / ani z żadnym innym nie daje żadnych złych efektów, wchodzi / i ten następny, czyli cyfra 0,1, itd. ale ja korzystam z biblioteki libmysql.dll bezpośrednio i przez dbExpress. Mój MySQL jest stary - 3.xxx. Proste obejście, to jakaś unikalna sekwencja znaków, albo jeśli struktura danych jest taka równiutka, to może sprawdzanie znaku na określonej pozycji juz w VB, to chamskie ale drivera ODBC, ani interpretacji danych w VB raczej nie poprawisz :(. W ostateczności kolejna kolumna, ale to też chamskie...
Zobacz też to: http://dev.mysql.com/doc/refman/4.1/...al-values.html Może tego typu sztuczką to obejdziesz. Mariusz
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Borgson - 13-11-2006 00:47
Ok , znalazłem rozwiązanie problemu :)
UPDATE table SET `pole1` = replace(`pole1, '\0', '/0')
Podmienia mi wszystko w DB i sprawa załatwiona :)
Pozdrawiam, Piotr
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
String line; if (line=="cos"){...}....problem
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
[postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?=
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
plik corel 11 na corel 8 = problem z otwarciem
=?iso-8859-2?q?Oracle_Database_link_problem_z_po=B3=B1czeniem _ze_zdaln=B1_baz=B1?=
SQL Server 2005: początkujący programista T-SQL ma problem
ms sql 2000 i ms server 2003 problem z logowaniem
zanotowane.pldoc.pisz.plpdf.pisz.pllunadance.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|