C# 如何从Sharepoint列表中获取数据,然后使用C控制台应用程序将其插入SQL表
背景: 我用C控制台应用程序中的SSOM服务器端对象模型来完成这一切。 我有一个到空数据库的连接,它将被初始填充,然后根据需要更新 在SharePoint server上有两个列表,其中有一个包含所有其他列表名称的标题列表。其他列表是文章目录 标题列表包含大约40个字段,包括标题、目录类型、目录名称、目录ID等等,。。。诸如此类 其他目录列表包含大约300个字段CatalogId、ArticlePrice、ArticleName等,。。。等等 下面是我使用的类的代码:C# 如何从Sharepoint列表中获取数据,然后使用C控制台应用程序将其插入SQL表,c#,sharepoint,C#,Sharepoint,背景: 我用C控制台应用程序中的SSOM服务器端对象模型来完成这一切。 我有一个到空数据库的连接,它将被初始填充,然后根据需要更新 在SharePoint server上有两个列表,其中有一个包含所有其他列表名称的标题列表。其他列表是文章目录 标题列表包含大约40个字段,包括标题、目录类型、目录名称、目录ID等等,。。。诸如此类 其他目录列表包含大约300个字段CatalogId、ArticlePrice、ArticleName等,。。。等等 下面是我使用的类的代码: public class
public class SharePointProduction
{
private static XYZ_Entity _context = new XYZ_Entity();
public static void Main()
{
string siteURL = "http://somesite.local/sites/promo_tool";
try
{
using (SPSite site = new SPSite(siteURL))
{
using (SPWeb web = site.OpenWeb())
{
GetSharePointCatalogHeaders(web);
Console.WriteLine("Press any key to continue...");
}
}
}
catch (Exception)
{
PrintErrorSharepointConnection();
PrintPressKeyToExit();
}
finally
{
Console.ReadKey();
}
}
GetSharePointCatalogHeaders方法---------
private static SPListItemCollection GetSharePointCatalogHeaders(SPWeb web)
{
var catalogHeaderList = web.Lists.TryGetList("Headers List");
if (catalogHeaderList == null) throw new Exception("Unable to get catalog headers used for checking status of catalogs");
var catalogHeaderItems = catalogHeaderList.GetItems("Id", "_x0160_ifra_x0020_artikla", "Naziv_x0020_artikla", "Katalog_x002f_ID", "Status_x0020_kataloga", "Datum_x0020_po_x010d_etka_x0020_");
return catalogHeaderItems;
}
到目前为止,这就是我得到的
我需要更新数据库中一个名为Headers的表中的Headers列表,并将其他列表文章目录更新为Catalogs表
更清楚地说,我很抱歉,英语是我的第二语言:您的问题不清楚,但一个简单的解决方案是在excel中导出SharePoint列表,然后使用SQL management studio将该数据导入SQL表 但是,如果您想使用C,那么您可以使用下面的代码获取所有列表项,然后插入到SQL表中
using ( SPSite site = new SPSite ("http://moss/sites/yousitename"))
{
SPWeb myWeb = site.OpenWeb();
SPList target = myWeb.Lists["YourListName"];
SPListItems items = list.Items;
myWeb.Dispose();
}
以下代码供您参考
class Program
{
static void Main(string[] args)
{
try
{
using (SPSite site = new SPSite("http://somesite.local/sites/promo_tool"))
{
using (SPWeb myWeb = site.OpenWeb())
{
SPList target = myWeb.Lists["Headers List"];
SPListItemCollection items = target.GetItems();
DataTable dt = items.GetDataTable();
if (dt.Rows.Count > 0)
{
string consString = "SQL Connection String";
using (SqlConnection con = new SqlConnection(consString))
{
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
{
sqlBulkCopy.DestinationTableName = "Table1";
sqlBulkCopy.ColumnMappings.Add("ID", "ID");
sqlBulkCopy.ColumnMappings.Add("_x0160_ifra_x0020_artikla", "_x0160_ifra_x0020_artikla");
sqlBulkCopy.ColumnMappings.Add("Naziv_x0020_artikla", "Naziv_x0020_artikla");
sqlBulkCopy.ColumnMappings.Add("Katalog_x002f_ID", "Katalog_x002f_ID");
sqlBulkCopy.ColumnMappings.Add("Status_x0020_kataloga", "Status_x0020_kataloga");
sqlBulkCopy.ColumnMappings.Add("Datum_x0020_po_x010d_etka_x0020_", "Datum_x0020_po_x010d_etka_x0020_");
con.Open();
sqlBulkCopy.WriteToServer(dt);
con.Close();
}
}
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadKey();
}
}
}
我们也可以使用PowerShell来实现它,下面的文章与PowerShell一起供您参考
class Program
{
static void Main(string[] args)
{
try
{
using (SPSite site = new SPSite("http://somesite.local/sites/promo_tool"))
{
using (SPWeb myWeb = site.OpenWeb())
{
SPList target = myWeb.Lists["Headers List"];
SPListItemCollection items = target.GetItems();
DataTable dt = items.GetDataTable();
if (dt.Rows.Count > 0)
{
string consString = "SQL Connection String";
using (SqlConnection con = new SqlConnection(consString))
{
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
{
sqlBulkCopy.DestinationTableName = "Table1";
sqlBulkCopy.ColumnMappings.Add("ID", "ID");
sqlBulkCopy.ColumnMappings.Add("_x0160_ifra_x0020_artikla", "_x0160_ifra_x0020_artikla");
sqlBulkCopy.ColumnMappings.Add("Naziv_x0020_artikla", "Naziv_x0020_artikla");
sqlBulkCopy.ColumnMappings.Add("Katalog_x002f_ID", "Katalog_x002f_ID");
sqlBulkCopy.ColumnMappings.Add("Status_x0020_kataloga", "Status_x0020_kataloga");
sqlBulkCopy.ColumnMappings.Add("Datum_x0020_po_x010d_etka_x0020_", "Datum_x0020_po_x010d_etka_x0020_");
con.Open();
sqlBulkCopy.WriteToServer(dt);
con.Close();
}
}
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadKey();
}
}
}
如果您使用SharePoint Online或在客户端访问SharePoint列表,我们也可以使用CSOM C来实现
因此,您需要编写代码来将值存储在数据库中。你有现有的数据库吗?您是否已经访问了它,如果是,如何访问?这是什么样的数据库?你想做什么?这些项目已经来自SQL Server数据库。但列表不是数据库表。您根本不需要那个列表名表。所有项目都已在web级别可用。如果您对CAML查询使用正确的方法,则可以将数据作为DataTable获取,但仍需要处理多个值等。您可以按内容类型进行筛选,并从整个网站获取所有相关项是的,我需要编写一个代码,从Sharepoint列表中读取数据并将其存储到数据库中。我有一个基于Microsoft SQL Server的数据库,它是用VS2019创建的。现在,我有一个Headers表,其中包含SharePoint列表Headers列表中存在的所有对应列。到数据库的连接是使用ADO.NET实体数据模型创建的。这两个选项都不简单。SharePoint不是一个数据库。导出到Excel仅导出特定视图,并且仅导出有限数量的记录。内容将是显示文本,而不是实际数据。至于通过项目访问列表项目,这是一个非常缓慢的过程,但这是可能的。我需要使用服务器端对象模型和C控制台应用程序。我需要使用console应用程序从SharePoint的列表中获取项目数据,然后将相同的数据插入其他服务器上的数据库。