【问题标题】:Getting error C2440 when trying SqlConnection尝试 SqlConnection 时出现错误 C2440
【发布时间】:2019-02-03 13:04:19
【问题描述】:

得到

错误 C2440:“正在初始化”:无法从 'System::Data::SqlClient::SqlConnection' 到 '系统::数据::SqlClient::SqlConnection ^'

对于这一行

    SqlConnection^ con = SqlConnection("c:\\project\\project\\database.db");

想知道为什么我会收到这个错误以及如何修复它,我使用的是 Visual c++,winform ui

【问题讨论】:

    标签: winforms visual-c++ c++-cli


    【解决方案1】:

    错误消息应该清楚地表明出了什么问题。你只需要仔细看,因为这是一个字符的差异。又是这样,去除了噪音:

    无法从“SqlConnection”转换为“SqlConnection ^”

    看到末尾的^ 字符了吗?编译器说它无法从对象 (SqlConnection) 转换为托管的指向对象的指针 (SqlConnection^)。

    要创建指向对象的托管指针,您可以使用 gcnew 运算符:

    SqlConnection^ con = gcnew SqlConnection("c:\\project\\project\\database.db");
    

    或者,如果您实际上不需要指针,只需更改 con 变量的类型:

    SqlConnection con = SqlConnection("c:\\project\\project\\database.db");
    

    更多详情请见:What does the caret (‘^’) mean in C++/CLI?

    【讨论】:

    • 啊,是的,我的糟糕,我没有注意到我错过了 gcnew,不知何故,无论如何感谢您指出这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 2013-06-16
    • 1970-01-01
    • 2014-12-19
    相关资源
    最近更新 更多