Wie gleiche Datenbank und dasselbe Programm für zwei verschiedene Schauplätze in .NET zu verwenden,

stimmen
3

Ich habe ein C # Programm, das einen SQL Server verwendet database.I es bereits in einem Land ist mit, die verwendet wird. als Dezimal-Trennzeichen. Jetzt möchte ich es in einem anderen Land verwenden, das als Dezimaltrennzeichen verwendet.

in C # gibt es einige Anwendungsebene Einstellung, dass ich einige Codes ändern oder schreiben kann, so dass ich die gleiche Datenbank und das gleiche Programm verwenden kann? oder muss ich meine gesamten Code ändern diese neue Dezimaltrennzeichens zu behandeln?

Ich weiß nicht, wie diese works.Basically ich es denken würde Probleme in My SQL-Abfragen werden. Beispiel sagen, einer meiner bestehenden Aussagen

insert into tblproducts(productId,Price) values('A12',24.10)

jetzt in neuem Land wird es worden

insert into tblproducts(productId,Price) values('A12',24,10)

dies einen Fehler aus

so muß ich ganzen Code ändern, um diese Situation zu bewältigen?

Vielen Dank

Veröffentlicht am 09/12/2008 um 18:17
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
1

Wenn Sie die Abfrage mit String-Verkettung gebaut, verwenden Parameter statt. Also anstatt zu schreiben:

 var query = "insert into tblproducts(productId,Price) values('" + article + "','"
    + price + ')';

verwenden OleDbParameters :

 var query = "insert into tblproducts(productId,Price) values(?,?)"
 var cmd = new OleDbCommand(query, connection);
 cmd.Parameters.Add("@article", OleDbType.VarChar).Value = article;
 cmd.Parameters.Add("@price", OleDbType.Single).Value = price;

Das spart Ihnen eine Menge Probleme, einschließlich Lokalisierungsprobleme.

Beantwortet am 09/12/2008 um 18:46
quelle vom benutzer

stimmen
0

In Ihrer Global.asax.vb-Datei können Sie die Kultur der aktuellen Seite zu laden ein:

Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture

Dies wird alle Kultur-aware Funktionalität Arbeit gut machen. zB (5000,25) .ToString () wird Kommas vs. Perioden verwenden je nach was Kultur, die Sie festgelegt. Außerdem werden eine Eingaben vom Benutzer in einen numerischen Typ Lesen analysiert entsprechend ihrer Kultur Regeln. Termine werden korrekt angezeigt (12/9/08 vs. 9/12/08). Sie erhalten, dass im Grunde alle kostenlos.

Dies ist offensichtlich verursacht Probleme, wenn auf andere Systeme zu sprechen, die alles in der gleichen Kultur erwarten. Um dies zu lösen, schreiben Sie Ihre Fragen mit der invarianten Kultur:

(5000.25).ToString(CultureInfo.InvariantCulture) 

Dies setzt ausdrücklich, dass die Ausgabe auf etwas, das Mysql zusammen mit bekommen kann.

Hinweis: Wenn Sie eine richtige Datenschicht haben, und Sie passieren numerische Typen hinein, Sie wahrscheinlich eine Menge von dieser Verwirrung vermeiden.

Beantwortet am 09/12/2008 um 18:46
quelle vom benutzer

stimmen
0

Sie können ein paar Dinge tun, um dies zu beheben.

zuerst, wenn Sie Werte in der Schnittstelle einnehmen, dann werfen Sie diese Werte in eine Dezimalzahl. Decimal.Parse ist eine abhängige Funktion Kultur und die aktuelle Kultur verwenden, um Werte zu analysieren. Deshalb, wenn die Current Kommas als Dezimaltrennzeichen verwendet dann Ihr Guss richtig. Dann, wenn Sie die Ausgabe der Wert von Ihrem Variable, können Sie das Decimal.ToString Format immer Ausgang geben Sie eine Periode als Trennzeichen verwenden.

Oh, vergaß hinzuzufügen. Sie können auch Ihre Parsing Währung ändern, um anzuzeigen, die Zeichen Komma sowie $ ermöglicht. Zum Beispiel: Decimal.Parse (Betrag, NumberStyles.Currency)

Beantwortet am 09/12/2008 um 18:44
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more