select语句中的"字符串数据,右截断"警告

Jon*_*nek 5 sql-server ms-access mfc odbc

我正在将访问2003数据库升级到SQL Server Express 2008.这些表似乎创建正常,数据看起来还不错.

我有一个连接到此数据库的MFC应用程序.它可以很好地连接到访问,但是当我连接到SQL Server时,我在select语句上收到以下错误.

DBMS: Microsoft SQL Server
Version: 10.50.1600
ODBC Driver Manager Version: 03.80.0000
Warning: ODBC Success With Info on field 0.
String data, right truncation

State:01004,Native:0,Origin:[Microsoft][ODBC SQL Server Driver]
Run Code Online (Sandbox Code Playgroud)

返回的数据应为8个字符,但只有7个字符,最右边的字符被截断.

访问前端可以正确读取SQL Server中的数据.

SQL Server表中的字段定义为nvarchar,长度为8.

读取该字段的代码类似于

CDatabase Database;
CString sSerialNumber = "00000000";
CString SqlString;

CString sDsn = "Driver={SQL Server};Server=server\\db;Database=Boards;Uid=uid;Pwd=pwd;Trusted_Connection=False";
Database.Open(NULL,false,false,sDsn);

CRecordset recset( &Database );
SqlString.Format("Select SerialNumber from boards where MACAddress = '%s'",mac);
recset.Open(CRecordset::forwardOnly,SqlString,CRecordset::readOnly);
recset.GetFieldValue("SerialNumber",sSerialNumber);
Run Code Online (Sandbox Code Playgroud)

在此之后,sSerialNumber应该是12345678但是它的1234567

谢谢您的帮助

Joe*_*lli 2

我同意这与驱动程序有关。{SQL Server} 驱动程序是为与 SQL 2000 一起使用而引入的。{SQL Native Client} 是随 2005 一起推出的。理想情况下,对于 2008 数据库,您应该使用最新的 {SQL Server Native Client 10.0}。较新的驱动程序向后兼容旧版本的 SQL Server。