Ik heb een column in een MSSQL2005 database als type varchar(50) gedefinieerd.
Vanuit een C# .Net programma wil ik hier verschillende waardes inzetten. Hiervoor gebruik ik geparameteriseerde prepared queries.
Om een parameter te creeren gebruik ik de volgende code. De parameter wordt gecached.
Voor een insert of update, wordt de parameter uit de cache gevist en wordt gevuld:
Nu insert ik de volgende waardes:
A
AA
AAA
AAAA
de eerste 2 inserts gaan altijd goed. Alle inserts hierna vullen nooit meer characters dan de tweede groot was.
1e: Param.Size = 1
2e: Param.Size = 2
3e: Param.Size = 3, maar in de DB staat AA ipv AAA
4e: Param.Size = 4, maar in de DB staat AA ipv AAAA
Het is misschien een beetje een onduidelijk verhaal, maar het is te veel werk om onze DAL laag helemaal uit te leggen. De parameter size op een fixed waarde zetten kan echter niet, omdat ik niet weet wat de size is op designtime.
Het komt erop dat ADO op een gegeven moment de parameter buffer niet meer lijkt te vergroten.
Iemand enig idee wat er hier fout gaat. Google en MSDN geven hier geen uitsluitsel over. Ik zie wel dat alle voorbeelden met een fixed size werken, of elke keer de parameters opnieuw aanmaken.
Vanuit een C# .Net programma wil ik hier verschillende waardes inzetten. Hiervoor gebruik ik geparameteriseerde prepared queries.
Om een parameter te creeren gebruik ik de volgende code. De parameter wordt gecached.
code:
1
| IDbDataParameter Param = SqlCommand.CreateParameter(); |
Voor een insert of update, wordt de parameter uit de cache gevist en wordt gevuld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| public void SetParamStr (Int32 paramNo, String value, bool encrypted,
Int32 encRealLength, bool isNull) {
IDbDataParameter Param;
if (m_LastPrepExec) {
Param = (IDbDataParameter)m_ActiveExecCommand.Parameters[paramNo];
} else {
Param = (IDbDataParameter)m_ActiveQryCommand.Parameters[paramNo];
}
Param.DbType = DbType.String;
if (value.Length > Param.Size) {
Param.Size = value.Length;
}
Param.Value = value;
} // SetParamStr |
Nu insert ik de volgende waardes:
A
AA
AAA
AAAA
de eerste 2 inserts gaan altijd goed. Alle inserts hierna vullen nooit meer characters dan de tweede groot was.
1e: Param.Size = 1
2e: Param.Size = 2
3e: Param.Size = 3, maar in de DB staat AA ipv AAA
4e: Param.Size = 4, maar in de DB staat AA ipv AAAA
Het is misschien een beetje een onduidelijk verhaal, maar het is te veel werk om onze DAL laag helemaal uit te leggen. De parameter size op een fixed waarde zetten kan echter niet, omdat ik niet weet wat de size is op designtime.
Het komt erop dat ADO op een gegeven moment de parameter buffer niet meer lijkt te vergroten.
Iemand enig idee wat er hier fout gaat. Google en MSDN geven hier geen uitsluitsel over. Ik zie wel dat alle voorbeelden met een fixed size werken, of elke keer de parameters opnieuw aanmaken.
[ Voor 0% gewijzigd door Quitter3 op 24-04-2007 12:32 . Reden: voorbeeld met text column niet helemaal duidelijk ]