也许任何人都可以向我解释一下:
bool Func1(LPCTSTR sData)
{
if (sData) { ... }
}
Run Code Online (Sandbox Code Playgroud)
我把这个函数称为:
CString str = _T("");
Func1((str.IsEmpty() ? NULL : str));
Run Code Online (Sandbox Code Playgroud)
并且函数内部的'sData'永远不会为NULL,它总是空字符串而不是NULL,为什么?Eddited代码是这样的:
LPCTSTR strNull = NULL;
Func1((str.IsEmpty() ? strNull : str));
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它的工作正确.
尝试从表中获取简单计数会导致异常波纹管。尝试了不同的选择语句,这也有例外:“ SELECT * FROM goods”,但是“ SELECT col1, col2 FROM goods” - 无一例外。我究竟做错了什么?从工作台这些选择作品。
字典中不存在给定的键。System.Collections.Generic.KeyNotFoundException:字典中不存在给定的键。在 System.Collections.Generic.Dictionary`2.get_Item(TKey key) 在 MySql.Data.MySqlClient.MySqlField.SetFieldEncoding() 在 MySql.Data.MySqlClient.NativeDriver.GetColumnData(MySqlField field)
在 MySql.Data.MySqlClient.NativeDriver .GetColumnsData(MySqlField[] 列) 在 MySql.Data.MySqlClient.Driver.GetColumns(Int32 count)
在 MySql.Data.MySqlClient.ResultSet.LoadColumns(Int32 numCols) 在 MySql.Data.MySqlClient.ResultSet..ctor(Driver d, Int32 statementId, Int32 numCols) 在 MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) 在 MySql.Data.MySqlClient.MySqlDataReader.NextResult() 在 MySql.Data.MySqlClient.MySqlDataReader.Close() 在 MySql.Data.MySqlClient.MySqlCommand.ResetReader() 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior)行为)在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
在 MySqlSybaseComparer.DbTester.Test(String& error) in c:\MySqlSybaseComparer\DbTester.cs:line 68
代码片段:
using (MySqlConnection conn = new MySqlConnection(ConStrMySql))
{
try
{
conn.Open();
using (MySqlCommand cmd = new MySqlCommand("SELECT count(*) FROM goods", conn)) …Run Code Online (Sandbox Code Playgroud)