title: What is the difference between sqlite3_bind_text, sqlite3_bind_text16 and sqlite3_bind_text64?
body: <p>I am using sqlite3 C interface. After reading document at <a href="https://www.sqlite.org/c3ref/bind_blob.html" rel="nofollow noreferrer">https://www.sqlite.org/c3ref/bind_blob.html</a> , I am totally confused.</p>
  
  <p>What is the difference between sqlite3_bind_text, sqlite3_bind_text16 and sqlite3_bind_text64?</p>
  
  <p>The document only describe that sqlite3_bind_text64 can accept encoding parameter including SQLITE_UTF8, SQLITE_UTF16, SQLITE_UTF16BE, or SQLITE_UTF16LE.</p>
  
  <p>So I guess, based on the parameters pass to these functions, that:</p>
  
  <p>sqlite3_bind_text is for ANSI characters, char *
  sqlite3_bind_text16 is for UTF-16 characters, 
  sqlite3_bind_text64 is for various encoding mentioned above.</p>
  
  <p>Is that correct?</p>
  
  <p><strong>One more question:</strong></p>
  
  <p>The document said "If the fourth parameter to sqlite3_bind_text() or sqlite3_bind_text16() is negative, then the length of the string is the number of bytes up to the first zero terminator." But it does not said what will happen for sqlite3_bind_text64. Originally I thought this is a typo. However, when I pass -1 as the fourth parameter to sqlite3_bind_text64, I will always get SQLITE_TOOBIG error, that makes me think they remove sqlite3_bind_text64 from the above statement by purpose. Is that correct?</p>
  
  <p>Thanks</p>