2008-10-06 2 views
5

Hier sind die Erklärungen der Variablen:C++ SQLBindParameter

string strFirstName; 
string strLastName; 
string strAddress; 
string strCity; 
string strState; 
double dblSalary; 
string strGender; 
int intAge; 

... Haben einige "cin" -Aussagen Daten zu erhalten ...

retcode = SQLPrepare(StatementHandle, (SQLCHAR *)"INSERT INTO EMPLOYEE ([FirstName], [LastName], [Address], [City], [State], [Salary], [Gender],[Age]) VALUES (?,?,?,?,?,?,?,?)", SQL_NTS); 

retcode = SQLBindParameter(StatementHandle, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, 50, 0 &strFirstName,0, NULL); 

retcode = SQLBindParameter(StatementHandle, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, 50, 0, &strLastName,0, NULL); 

retcode = SQLBindParameter(StatementHandle, 3, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, 30, 0, &strAddress,0, NULL); 

retcode = SQLBindParameter(StatementHandle, 4, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, 30, 0, &strCity,0, NULL); 

retcode = SQLBindParameter(StatementHandle, 5, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, 3, 0, &strState,0, NULL); 

retcode = SQLBindParameter(StatementHandle, 6, SQL_PARAM_INPUT, SQL_C_DOUBLE, SQL_DOUBLE, 0, 0, &dblSalary,0, NULL); 

retcode = SQLBindParameter(StatementHandle, 7, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, 2, 0, &strGender,0, NULL); 

retcode = SQLBindParameter(StatementHandle, 8, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &intAge,0, NULL); 

retcode = SQLExecute(StatementHandle); 

Die int und doppelte Arbeit gut und bekommen in der Tabelle gespeichert ... aber ich kann nicht herausfinden, wie die Saiten erhalten zu speichern ...

Antwort

8

MSDN documentation for SQLBindParameter sagen Sie sollen einen Puffer zu übergeben, die Daten für ParameterValuePtr und die Länge des Puffers in Bytes für BufferLength enthält:

retcode = SQLBindParameter(StatementHandle, 1, SQL_PARAM_INPUT, SQL_C_CHAR, 
    SQL_LONGVARCHAR, 50, 0, strFirstName.c_str(), strFirstName.length(), NULL); 

ParameterValuePtr [Latente Input] Ein Zeiger auf einen Puffer für die Daten des Parameters . Weitere Informationen zu finden Sie unter "ParameterValuePtr Argument" in "Kommentare".

BufferLength [Eingabe/Ausgabe] Länge von der Puffer ParameterValuePtr in Bytes. Weitere Informationen finden Sie unter "BufferLength Argument" in "Kommentare".

+0

ganz in der Nähe ... :) Vielen Dank! retcode = SQLBindParameter (AnweisungHandle, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, 50, 0, (SQLPOINTER) strFirstName.c_str(), strFirstName.length(), NULL); – PapaDaniel

+1

Justed musste das (SQLPOINTER) hinzufügen und es hat super funktioniert. – PapaDaniel

+0

was bedeutet, zwei unterschiedliche Datentypen übergeben? Ex. SQL_C_CHAR, SQL_LONGVARCHAR –

0

Es ist wie der api sieht, will ein unsigned char * try pa sing in einer c-Zeichenfolge unter Verwendung des Methodenaufrufs c_str().

+1

SQLPOINTER ParameterValuePtr http://msdn.microsoft.com/en-us/library/ms710963.aspx – PapaDaniel