【发布时间】:2015-09-05 17:46:44
【问题描述】:
我确定这个问题之前已经回答过,但有时我需要用自己的话问它才能理解答案。
我最近遇到了一个问题,即在计算机上使用捷克语的人无法运行我的应用程序,我使用的是美式英语。
我在 SQLite 数据库中保存了一些十进制值作为字符串。我猜捷克语不喜欢我的小数(1.50),因为它在尝试将它从字符串解析为小数时崩溃。它只是无法将 1.50 识别为小数的正确格式。
我希望有一个简单的解决方法,有人建议强制本地化文化进入美国。我做了一些研究,真的很困惑,我希望有人能帮助我了解如何解决这个问题。
谢谢
加载 SQLite 数据:
Public Shared Sub LoadAutoBetting()
Dim SQLstr As String = "Select * FROM AutoBetting"
Dim connection As String = "Data Source=utb.db;Version=3"
Dim SQLConn As New SQLiteConnection
Dim SQLcmd As New SQLiteCommand
Dim SQLdr As SQLiteDataReader
SQLConn.ConnectionString = connection
SQLConn.Open()
SQLcmd.Connection = SQLConn
SQLcmd.CommandText = SQLstr
SQLdr = SQLcmd.ExecuteReader()
While SQLdr.Read()
Bets.autoMulti = SQLdr(0)
End While
SQLdr.Close()
SQLConn.Close()
End Sub
Bets.autoMulti = SQLdr(0) 处弹出的错误 autoMulti 是小数,SQLdr(0) 是字符串(1.50),这是我在创建表时插入的默认值。
【问题讨论】:
-
不要强行翻译成英文,根据当地文化进行解析——展示你在做什么
-
Plutonix,我用加载数据的代码更新了帖子,删除了不相关的代码。你还需要看什么吗?
-
我应该提到我已经尝试过
Decimal.Parse(SQLdr(0))&CDec(SQLdr(0)) -
autoMulti is a decimal, SQLdr(0) is a string(1.50)实际情况引出了更多问题。 A)听起来 Option Strict 已关闭,因为不允许将字符串分配给 Decimal B)如果值为 Decimal,为什么将其保存为字符串?Decimal.TryParse(strD, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, dec)这将解析(或尝试)尊重本地计算机文化设置 - 它允许.用于英语,,用于世界其他大部分地区。同样,如果您保存为数字,则不必解析它 -
Josh,sqlite3 支持 REAL 数据类型来存储这种数据。
标签: .net vb.net sqlite localization decimal