Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用ODBC API更新\将数据插入NVARCHAR列_C++_Sql_Unicode_Odbc_Sybase - Fatal编程技术网

C++ 如何使用ODBC API更新\将数据插入NVARCHAR列

C++ 如何使用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

我正在尝试通过MicrosoftsODBCAPI更新Sybase表。下面是我正在尝试执行的C++基础知识。在TableNameXXX表中,ColumnNameXXX的类型为NVARCHAR 200

   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'"