0

xamarin.forms 프로젝트가 있습니다. 이 코드 줄은 작동)xamarin forms ... SqlCommand에서 매개 변수 값을 가져올 수 없습니다 ... "marshalByRefObject"가 'mscorlib'에 정의되어 있다고 주장합니다. 찾을 수 없습니다.

2) cmd.Parameters.Add(new SqlParameter("@UserID", SqlDbType.Char, 5)).Direction = ParameterDirection.Input; .... (참고 : PCL에서 나는 이러한 코드 3 개 라인 클래스 ....

1) SqlCommand cmd = new SqlCommand();

.... (참고가 : 코드 줄)을 작동

3) var userid = cmd.Parameters["@UserID"].Value; .... (참고 : 코드 줄은) 나는이 메시지를 수신하고

...에 의해

"참조 작동하지 않습니다 유형 "MarshalByRefObject" 그것은 'mscorlib에'에 정의 주장하지만,

내가하는 SqlCommand에 매개 변수를 추가 할 수 있습니다 안드로이드 특정 프로젝트가 아닌 PCL 클래스의 코드 작업

이 3 선을 찾을 수 없습니다 PCL이 클래스에서하지만 당신의 도움

+0

'SqlCommand'의 전체 네임 스페이스는 무엇입니까? PCL에서 lib를 참조 했습니까? –

+0

전체 네임 스페이스를 System.Data.SqlClient.SqlCommand .... System.Data.dll C : \ Program 파일 (x86) \ Reference Assemblies \ 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을 참조하십시오. 당신이 PCL에서 네이티브 안드로이드 SQLite는을 사용하려면

, Dependency Service을 사용하십시오 :

  1. 당신의 PCL 프로젝트에서. 당신의 종속성 서비스를위한 인터페이스 (ISQLDb)를 만들고 사용하는 서비스를 DependencyService.Get<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; 
         } 
        } 
    }