sharepoint2010: подключение к базе данных в изолированной веб-части - PullRequest
0 голосов
/ 09 февраля 2011

Я хочу установить соединение с базой данных в изолированной веб-части. Следующий код прекрасно работает, когда я использую запросы. Кто-нибудь может сказать мне, как использовать хранимую процедуру и передать ей параметры? И как работать с веб-сервисом?

    public static DataSet ChkConn(string strval)
    {
        public static DataSet ds;        
        public static string assemblyName = "FullTrustProxy, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=75e25e9dc5ff21aa";
        public static string typeName = "DBFullTrust.FullTrustProxy.SQLFullTrustProxy";

        try
        {
            SQLProxyArgs proxyArgs = new SQLProxyArgs();
            proxyArgs.ConnectionString = "Persist Security Info=False;User ID=sa;Password=;Initial Catalog=Cat;Data Source=ABC";
            if (strval == "B")
                proxyArgs.Command = "select * from table1";
            else
                proxyArgs.Command = "select * from table2";


            proxyArgs.returnType = typeof(DataSet);
            return ds = (DataSet)SPUtility.ExecuteRegisteredProxyOperation(assemblyName, typeName, proxyArgs);                 
        }
        catch
        {

        }
        return ds;
    }

1 Ответ

0 голосов
/ 09 февраля 2011

Вам потребуется изменить операцию полного доверенного прокси.

Примерно так, чтобы принимать аргументы

http://spc3.codeplex.com/SourceControl/changeset/view/57419#985226

using (SqlCommand cmd = new SqlCommand(args.Command, conn)) {
    command.CommandType = CommandType.StoredProcedure;
    foreach (KeyValuePair<string, object> para in args.Parameters) {
        cmd.Parameters.AddWithValue(para.Key, para.Value);
    }
    return cmd.ExecuteNonQuery();
}

И использовать это для вызовапрокси:

http://spc3.codeplex.com/wikipage?title=DatabaseProxy

SqlDataReaderProxyArgs args = new SqlDataReaderProxyArgs();
args.ConnectionString = "Data Source=;Initial Catalog=;User ID=;Password=";
args.Command = "select * from sys.indexes";
args.CommandType = CommandType.Text;
args.Parameters.Add(new KeyValuePair<string, object>() { Key = "Id", Value = "1"});
string assemblyName = typeof(SqlDataReaderProxyOperation).Assembly.FullName;
string typeName = typeof(SqlDataReaderProxyOperation).FullName;
object result = SPUtility.ExecuteRegisteredProxyOperation(assemblyName, typeName, args);
...