你好我在datetime上有这种格式异常,如何解决这个错误,我已经从访问数据库读取数据,现在我已经在sql server数据库上传了这些数据
string dbserver2 = textBox4.Text;
string dbname2 = textBox1.Text;
string dbusername2 = textBox2.Text;
string dbpassword2 = textBox3.Text;
SqlConnection conn2 = new SqlConnection("Data Source=" + dbserver2 + ";Initial Catalog=" + dbname2 + ";User ID=" + dbusername2 + ";Password=" + dbpassword2 + "");
conn2.Open();
string queryset2 = "SET IDENTITY_INSERT Articolo ON ";
string query2 = "INSERT INTO Articolo (CodMarca,CodArt,Fornitore,Descrizione,UM,Prezzo,PrezzoListino,DataAggiornamento) VALUES(@CodMarca,@CodArt,@Fornitore,@Descrizione,@UM,@Prezzo,@PrezzoListino,@DataAggiornamento)";
SqlCommand myCommand = new SqlCommand(query2, conn2);
myCommand.Parameters.AddWithValue("@CodMarca", CodMarca);
myCommand.Parameters.AddWithValue("@CodArt", CodArt);
myCommand.Parameters.AddWithValue("@Fornitore", Fornitore);
myCommand.Parameters.AddWithValue("@Descrizione", Descrizione);
myCommand.Parameters.AddWithValue("@UM", UM);
myCommand.Parameters.AddWithValue("@Prezzo", System.Convert.ToDecimal(PrezzoNetto));
myCommand.Parameters.AddWithValue("@PrezzoListino", System.Convert.ToDecimal(PrezzoCasa));
DateTime dt = Convert.ToDateTime(DataAggiornamento);
myCommand.Parameters.AddWithValue("@DataAggiornamento", dt);
myCommand.ExecuteNonQuery();
conn2.Close();
答案 0 :(得分:3)
Convert.ToDecimal
使用Decimal.Parse
,默认使用CurrentCulture
设置 。
您当前的文化可能使用NumberDecimalSeparator
而不是,
字符串,这就是您的代码抛出FormatException
的原因。即使您当前的文化设置使用NumberGroupSeparator
作为,
,结果也会返回444
。
作为一种解决方案,您可以Clone
您的文化并将此NumberDecimalSeparator
属性设置为,并在解析时将 克隆文化作为第二个参数使用。
var clone = (CultureInfo)CultureInfo.CurrentCulture.Clone();
clone.NumberFormat.NumberDecimalSeparator = ",";
和
myCommand.Parameters.AddWithValue("@PrezzoListino", Convert.ToDecimal(PrezzoCasa, clone));
还有一些事情;
AddWithValue
。 It may generate unexpected and surprising results sometimes。使用Add
方法重载来指定参数类型及其大小。using
statement自动处理您的连接和命令,而不是手动调用Close
或Dispose
方法。