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 server的c#接口使用与JDBC连接不同的连接字符串(您的字符串似乎是)。查看这篇文章或这些文档获取更多信息。