检查Azure连接的数据库onClick以进行登录

时间:2017-04-26 02:27:52

标签: java azure android-studio azure-mobile-services

所以Azure为我插入以下代码插入活动(Android Studio是我正在使用的)

将以下行添加到包含启动器活动的.java文件的顶部:

import com.microsoft.windowsazure.mobileservices.*;

在您的活动中,添加一个私有变量

private MobileServiceClient mClient;

将以下代码添加到活动的onCreate方法中:

mClient = new MobileServiceClient("https://pbbingo.azurewebsites.net", this);

将样本项类添加到项目::

public class ToDoItem{ public String id; public String Text;}

在您定义mClient的同一活动中,添加以下代码:

ToDoItem item = new ToDoItem();
item.Text = "Don't text and drive";
mClient.getTable(ToDoItem.class).insert(item, new TableOperationCallback<item>(){
public void onCompleted(ToDoItem entity, Exception exception, ServiceFilter response)
{
if(exception == null){
//Insert Succeeded
} else {
//Insert Failed 
}
}});

我的目标是创建一个登录页面。据我所知,上面的内容可能更多地考虑了ToList。我只是希望今天语法正确。我认为问题是我的基本类结构。我在创建时创建了一个OnClick Listener,它从我的布局中的按钮获取ID。我不需要检查数据库中的任何内容,直到按钮实际被点击登录或注册。

public class LoginClass extends AppCompatActivity{  
       public void onCreate(Bundle savedInstanceState) {
          setContentView(R.layout.MyLoginLayout);
          MobileServiceClient mClient = null; 

          try {
              mClient = new MobileServiceClient ("myAzureWebsite", "AzureKey", this);
} catch (MalformedURLException e) {
e.printStackTrace();
}

Button Attempt = (Button) findViewById (R.id.mySubmitButton);
final MobileServiceClient finalMClient = mClient; // finalized so I can use it later. 

Attempt.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick (View v) {
         final View thisView = v;
         final MyToDoItemClass item = new MyToDoItemClass();

In MyToDoItemClass I have two variables (Both String) Just left over from
the example of a ToDoList (they are String ID and String Text)

         item.Text = "Filler"; 
         item.ID = "Fill";
finalMClient.getTable(MyToDoItemClass.class).insert(new Table OperationCallback<item>() { //<--- I'm getting an error that the variable, item
is from an unknown class...

public void onCompleted (Item entity, Exception exception, ServiceFilterResponse response){
if(exception == null) {
Intent i = new Intent (LoginClass.this, MainActivity.class);
startActivity(i);
}else{
Toast.makeText(thisView.getContext(), "Failed", Toast.LENGTH_LONG).show();
}}
});
}
});
}}

问题在于TableOperationCallback表示MyToDoItemClass类中的项来自未知类。

1 个答案:

答案 0 :(得分:1)

您的代码中存在许多问题,如下所示。

  1. 根据课程MobileServiceClient的javadoc,没有方法insert(TableOperationCallback<E> callback),因此代码finalMClient.getTable(MyToDoItemClass.class).insert(new Table OperationCallback<item>() {...}无效。

  2. E中的泛型Table OperationCallback<E>表示您需要编写POJO类名而不是E,而不是像item这样的对象变量名,所以正确的代码应为new Table OperationCallback<MyToDoItemClass>,请参阅the Oracle tutorial for Generics以了解更多详情。

  3. 下图显示了班级insert的所有方法MobileServiceClient。方法名称下的粗体字Deprecated表示您不应该使用它来开发新项目,它只与新版Java SDK上的旧项目兼容。

  4. enter image description here

    请按照官方tutorial开发您的应用。如有任何疑虑,请随时告诉我。