09. april 2009 - 13:51Der er
7 kommentarer og 1 løsning
Varchar(3) gemmer "012" som "12"
Jeg har et lidt irriterende problem, nemlig at jeg gerne vil kunne gemme tal-værdier som 3 tegn lange strenge (fra 001-999). Indtil nu bruger jeg varchar(3), men når værdien opdateres i databasen bliver eksempelvis "012" gemt som "12" og det er jeg ikke interesseret i. Jeg kunne sagtens lave en beskidt C# løsning på problemet, men mon ikke der findes en måde at specificere det på sin SqlParameter eller måske i databasen? Nogen som har et bud på hvor man kan gøre det henne?
<i> SqlParameter[] sqlParameters = new SqlParameter[17]; sqlParameters[0] = new SqlParameter("mycolumn", myvalue); . . . using (SqlCommand command = myconnection.CreateCommand()) { command.CommandType = CommandType.StoredProcedure; command.CommandText = "mystoredprocedure"; command.Parameters.AddRange(sqlParameters); int rowsAffected = command.ExecuteNonQuery(); command.Parameters.Clear(); } . . . </i>
Når jeg debugger sqlParameters[0] kan jeg se at SqlDbType er "Varchar", size er 3, SqlValue er {012} og Value er "012". Men når command.ExecuteNonQuery er kørt er værdien stadig "12" i databasen.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.