Avatar billede boomshanka Nybegynder
09. april 2009 - 13:51 Der 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?
Avatar billede arne_v Ekspert
09. april 2009 - 15:01 #1
Det burde ske helt automatisk.

Hvordan gemmer du?
Avatar billede boomshanka Nybegynder
09. april 2009 - 15:26 #2
I grove træk ser det således ud:

<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.
Avatar billede boomshanka Nybegynder
09. april 2009 - 15:32 #3
...glemte at sige at jeg bruger Sql Server 2005 og .NET 2.0
Avatar billede arne_v Ekspert
10. april 2009 - 03:01 #4
Hvordan ser din SP ud ?

(det kan ikke passe - et eller andet sted i din kode må der være noget som konverterer til integer)
Avatar billede juks Novice
15. april 2009 - 20:43 #5
nej det er da helt rigtig , prøv at ændre din type til char(3)
Avatar billede juks Novice
21. oktober 2009 - 14:13 #6
?
Avatar billede boomshanka Nybegynder
31. oktober 2009 - 19:12 #7
Hov, det er vist lukketid for den her :-)

Løsningen lå ganske rigtigt som arne_v nævner i min SP. Det er rettet og fungerer upåklageligt...

Takker for input fra alle - arne_v, du smider bare et svar
Avatar billede arne_v Ekspert
31. oktober 2009 - 21:00 #8
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester