C++ 如何使用ODBC API更新\将数据插入NVARCHAR列
我正在尝试通过MicrosoftsODBCAPI更新Sybase表。下面是我正在尝试执行的C++基础知识。在TableNameXXX表中,ColumnNameXXX的类型为NVARCHAR 200C++ 如何使用ODBC API更新\将数据插入NVARCHAR列,c++,sql,unicode,odbc,sybase,C++,Sql,Unicode,Odbc,Sybase,我正在尝试通过MicrosoftsODBCAPI更新Sybase表。下面是我正在尝试执行的C++基础知识。在TableNameXXX表中,ColumnNameXXX的类型为NVARCHAR 200 SQLWCHAR updateStatement[ 1024 ] = L"UPDATE TableNameXXX SET ColumnNameXXX = N 'Executive Chair эюя' WHERE PKEYXXX = 'VALUE'"; if( ret = SQLExecD
SQLWCHAR updateStatement[ 1024 ] = L"UPDATE TableNameXXX SET ColumnNameXXX = N 'Executive Chair эюя' WHERE PKEYXXX = 'VALUE'";
if( ret = SQLExecDirect( hstmt, ( SQLWCHAR* ) updateStatement, SQL_NTS ) != SQL_SUCCESS )
{
// Handle Error
}
Sybase数据库的编目排序为1252LATIN1,字符集为windows-1252,排序为1252LATIN1,NcharCharSet为UTF-8,NCharCollection为UCA
一旦Sybase ODBC连接成功,我需要让它在其他数据库的各种ODBC驱动程序中工作
我得到的错误是第1行“Executive Chair”附近的[Sybase][ODBC Driver][SQL Anywhere]语法错误
如果我去掉Unicode字符并删除N,它将更新
有人知道如何让它工作吗?我错过了什么
我使用ODBC连接到SQL Server数据库编写了一个C.net项目,并且得到了类似的错误。我的意思是,这个错误在消息中包含Unicode文本,而Sybase ODBC错误丢失了Unicode文本
static void Main(string[] args)
{
using (OdbcConnection odbc = new OdbcConnection("Dsn=UnicodeTest;UID=sa;PWD=password")) // ;stmt=SET NAMES 'utf8';CharSet=utf16"
//using (OdbcConnection odbc = new OdbcConnection("Dsn=Conversion;CharSet=utf8")) // ;stmt=SET NAMES 'utf8';CharSet=utf8
{
try
{
odbc.Open();
string queryString = "UPDATE TableNameXXX SET ColumnNameXXX = N 'Executive Chair эюя' WHERE PKEYXXX = 'AS000008'";
System.Console.Out.WriteLine(queryString);
OdbcCommand command = new OdbcCommand(queryString);
command.Connection = odbc;
int result = command.ExecuteNonQuery();
if( result == 1)
{
System.Diagnostics.Debug.WriteLine("Success");
}
}
catch(Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.StackTrace);
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
}
“Executive Chairэююю”附近出现错误[42000][Microsoft][SQL Server Native Client 11.0][SQL Server]语法不正确。N和Unicode封闭字符串之间应该没有空格
"UPDATE TableNameXXX SET ColumnNameXXX = N 'Executive Chair эюя' WHERE PKEYXXX = 'AS000008'"
应该是
"UPDATE TableNameXXX SET ColumnNameXXX = N'Executive Chair эюя' WHERE PKEYXXX = 'AS000008'"