繁体   English   中英

C#中的SQL连接

[英]SQL connection in C#

private static string SqlDBConnectionString = "Server=12831-QHOO\\SQLEXPRESS;Database=DBHome;Trusted_Connection=True;";

private static void SaveDataToDB(DataTable DT)
{
    using (var bulkCopy = new SqlBulkCopy(SqlDBConnectionString, SqlBulkCopyOptions.KeepIdentity))
    {
        foreach (DataColumn col in DT.Columns)
        {
            bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);//(DT.ColumnName,SQLTableColumnName)
        }

        bulkCopy.BulkCopyTimeout = 600;
        bulkCopy.DestinationTableName = "DBHome";
        bulkCopy.WriteToServer(DT);
    }
}

我正在尝试使用上述设置连接到 C# 中的本地 SQL Server 数据库。 这样做时,上面显示的代码没有被执行,即没有数据被发送到表中。

有没有办法查看它是否真的连接到数据库? 我没有收到任何错误,并且退出代码为 0。

您可以自己创建一个连接,然后将该连接传递给SqlBulkCopy() ,而不是使用传递连接字符串和选项的SqlBulkCopy()的构造函数。 这样,您可以使用 try-catch 块来验证您是否已连接(失败的连接会引发SqlConnection对象的错误。

前任:

try {
    using (SqlConnection destinationConnection =
                     new SqlConnection(connectionString))
    {
        destinationConnection.Open();
        using (SqlBulkCopy bulkCopy =
                  new SqlBulkCopy(destinationConnection))
        {
            //do the operations you need to do in this block

        }
    }

}catch (Exception e)
{
    Console.WriteLine(e.Message);
}

这段代码实际上并没有改变任何功能,但更容易调试。 正如评论中提到的@zep426,我怀疑连接字符串可能是您的问题(您可能需要转义某些字符),但使用这种方法应该更容易确定问题。 例如,您可以添加控制台行以打印destinationConnection.State

编辑:

另请注意,SQL 服务器的 C# 接口使用与 JDBC 连接不同的连接字符串(您的字符串似乎是)。 有关更多信息,请参阅这篇文章这些文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM