c# - Sharepoint OLE DB - 无法插入记录? "Field not updateable"错误

标签 c# sql sharepoint ado.net oledb

我需要编写一个简单的 C# .NET 应用程序来检索、更新和插入 Sharepoint 列表中的一些数据。

我不是 Sharepoint 开发人员,我无法控制我们的 Sharepoint 服务器。我不想在 proper sharepoint development environment 中开发它只是因为我不想在 Sharepoint 服务器上部署我的应用程序 - 我宁愿只从外部访问数据。

无论如何,我发现您可以使用 OLE DB 访问 Sharepoint 数据,并且我使用一些 ADO.NET 成功尝试了它:

var db = DatabaseFactory.CreateDatabase();
DataSet ds = new DataSet();
using (var command = db.GetSqlStringCommand("SELECT * FROM List"))
{
    db.LoadDataSet(command, ds, "List");
}

以上工作。

但是,当我尝试插入时:

using (var command = db.GetSqlStringCommand("INSERT INTO List ([HeaderName],
    [Description], [Number]) VALUES ('Blah', 'Blah', 100)"))
{
    db.ExecuteNonQuery(command);
}

我收到此错误:

Cannot update 'HeaderName'; field not updateable.

我做了一些谷歌搜索,显然 you cannot insert data through OLE DB !

有人知道是否有一些可能的解决方法吗?

我可以尝试使用 Sharepoint Web 服务,但我最初尝试过,但验证过程很困难。这是我唯一的选择吗?

最佳答案

由于 SharePoint 许可,我不会将记录直接插入后端数据库!,无论如何,请使用 native Sharepoint Web 服务,即 http://server/site/_vti_bin/Lists.asmx

SharePoint 拥有许多 Web 服务,您可以调用它来执行 SharePoint 本身执行的几乎所有操作。

每个网站集都可以使用自己的 Web 服务,无需在服务器上编写代码,无需程序集,无需直接更改数据库...它们非常易于使用,并且 Microsoft 和其他公司有很多关于它们的文章.

您需要附加具有正确用户详细信息的普通 NetworkCredentials 类,并将其绑定(bind)到实例化的 Web 服务类。

如果您的 SharePoint 使用 SQL Server,您可以尝试使用 SqlClient 命名空间而不是 OLEDB,Web 服务的优点在于您不必太担心您的网站集位于哪个内容数据库上,尤其是在 SharePoint 中即时创建它们,而不是由管理员实际指定。

希望这有帮助。

干杯。

关于c# - Sharepoint OLE DB - 无法插入记录? "Field not updateable"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2602675/

相关文章:

c# - GDI+画线算法

c# - 在 gridview 中,updatepanel 不工作

javascript - 如何在更少的 SQL 查询中执行复杂的 API 授权?

Excel 2016 共享点文件仍以只读方式打开

windows - 使用 Windows 凭据进行 Web 登录

c# - 使用 linq 将共享点列表数据绑定(bind)到下拉列表

C# 使用组选择重复项

C# 在基类中创建派生类的实例

php - 如何在mysql中选择日期和时间之间的行?

sql - 如何在SQL中使用正则表达式?