0

我有一個xamarin.forms項目。在PCL我有與這些3行代碼的類....xamarin形式...無法從SqlCommand獲取參數值...錯誤「MarshalByRefObject」聲明它在'mscorlib'中定義..無法找到

1)SqlCommand cmd = new SqlCommand(); ....(注意:這行代碼作品)

2)cmd.Parameters.Add(new SqlParameter("@UserID", SqlDbType.Char, 5)).Direction = ParameterDirection.Input; ...(注:這行代碼的工作)

3)var userid = cmd.Parameters["@UserID"].Value; ....(注:這行代碼不起作用)

我收到這條消息...

「通過參考鍵入「MarshalByRefObject」聲稱它是在 「mscorlib程序」定義,但找不到

這3行代碼的工作在Android的具體項目,但不是在PCL類

我可以添加參數給SqlCommand在PCL類,但不能檢索值提前

感謝您的幫助

+0

什麼是'SqlCommand'的完整命名空間?你有沒有參考PCL中的任何庫? –

+0

完整命名空間= System.Data.SqlClient.SqlCommand ....我引用了System.Data.dll中... C:\ Program Files文件(x86)\參考程序集\ Microsoft \ Framework \ MonoAndroid \ v1.0 – trent

回答

0

完整的命名空間= System.Data.SqlClient.SqlCommand ....我引用System.Data.dll中英寸.. C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0

您引用的DLL僅用於Mono.Android項目,不適用於PCL項目。它不能用於PCL項目。有關說明,請參閱this case

如果您想使用Android內建的SQLite在PCL,請使用Dependency Service

  1. 在您的PCL項目。您依存服務與DependencyService.Get<ISQLDb>()創建界面(ISQLDb)和使用服務:

    public interface ISQLDb 
    { 
        void InitCmd(); 
    } 
    
    private void btnClick_Clicked(object sender, EventArgs e) 
    { 
        //use the service any where in your PCL project 
        ISQLDb db=DependencyService.Get<ISQLDb>(); 
        db.InitCmd(); 
    } 
    
  2. 創建於Mono.Android項目服務實現類並將其註冊爲依存服務:

    //register the Dependency Service 
    [assembly:Xamarin.Forms.Dependency(typeof(SQLDbImpl))] 
    namespace SQLCommandDemo.Droid 
    { 
        //implements the ISQLDb Interface 
        public class SQLDbImpl : ISQLDb 
        { 
         public void InitCmd() 
         { 
          SqlCommand cmd = new SqlCommand(); 
          cmd.Parameters.Add(new SqlParameter("@UserID", SqlDbType.Char, 5)).Direction = ParameterDirection.Input; 
          var userid = cmd.Parameters["@UserID"].Value; 
         } 
        } 
    } 
    
相關問題