1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-14 00:22:38 +03:00

Add support for the new sqlite3_bind_*() APIs. (CVS 1410)

FossilOrigin-Name: e8f980d842fcd793552acd32708db55c8f014634
This commit is contained in:
danielk1977
2004-05-20 01:12:34 +00:00
parent a34a84fe1a
commit 51e3d8e204
9 changed files with 480 additions and 37 deletions

View File

@@ -1043,10 +1043,16 @@ int sqlite3_bind_text(
int nData,
int eCopy
){
if( zData && nData<0 ){
nData = strlen(zData)+1;
int flags = MEM_Str|MEM_Utf8;
if( zData ){
if( nData<0 ){
nData = strlen(zData)+1;
flags |= MEM_Term;
}else if( !zData[nData-1] ){
flags |= MEM_Term;
}
}
return vdbeBindBlob((Vdbe *)p, i, zData, nData, eCopy, MEM_Str|MEM_Utf8);
return vdbeBindBlob((Vdbe *)p, i, zData, nData, eCopy, flags);
}
int sqlite3_bind_text16(
@@ -1056,14 +1062,26 @@ int sqlite3_bind_text16(
int nData,
int eCopy
){
if( zData && nData<0 ){
char *z = (char *)zData;
while( (*z)!=0 && (*(z+1))!=0 ) z+=2;
nData = (z - (char *)zData) + 2;
}
int flags = MEM_Str|MEM_Utf16le|MEM_Utf16be;
if( zData ){
/* If nData is less than zero, measure the length of the string.
** manually. In this case the variable will always be null terminated.
*/
if( nData<0 ){
nData = sqlite3utf16ByteLen(zData) + 2;
flags |= MEM_Term;
}else{
/* If nData is greater than zero, check if the final character appears
** to be a terminator.
*/
if( !(((u8 *)zData)[nData-1]) && !(((u8 *)zData)[nData-2]) ){
flags |= MEM_Term;
}
}
}
/* FIX ME - MEM_Utf16le? */
return vdbeBindBlob((Vdbe *)p, i, zData, nData, eCopy, MEM_Str|MEM_Utf16le);
return vdbeBindBlob((Vdbe *)p, i, zData, nData, eCopy, flags);
}
int sqlite3_bind_blob(