2016-07-19 8 views
-3

データベースを作成しようとしているときに、この奇妙なエラーが発生しています。私は経費マネージャーアプリを構築していて、textviewからSQLiteデータベースにデータを保存したいが、保存ボタンを押すとこれらのエラーが発生する。 ISこれは、MainActivityではなく、別のアクティビティでデータベースを作成しようとしているためです。E/SQLiteLog:(1) "Enter"の近く:構文エラー

07-20 01:49:31.032 28795-28795/com.example.alkesh.expensemanager101 E/SQLiteLog: (1) near "ENTER": syntax error 
07-20 01:49:31.032 28795-28795/com.example.alkesh.expensemanager101 D/AndroidRuntime: Shutting down VM 


                         --------- beginning of crash 
07-20 01:49:31.042 28795-28795/com.example.alkesh.expensemanager101 E/AndroidRuntime: FATAL EXCEPTION: main 
                         Process: com.example.alkesh.expensemanager101, PID: 28795 
                         Theme: themes:{default=overlay:com.baranovgroup.nstyle, iconPack:com.baranovgroup.nstyle, fontPkg:com.baranovgroup.nstyle, com.android.systemui=overlay:com.baranovgroup.nstyle, com.android.systemui.navbar=overlay:com.baranovgroup.nstyle} 
                         android.database.sqlite.SQLiteException: near "ENTER": syntax error (code 1): , while compiling: ENTER INTO money (name) VALUES ('25'); 
                          at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
                          at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
                          at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
                          at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
                          at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
                          at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
                          at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1674) 
                          at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1605) 
                          at com.example.alkesh.expensemanager101.AddMoney.insertIntoDatabase(AddMoney.java:95) 
                          at com.example.alkesh.expensemanager101.AddMoney.onClick(AddMoney.java:63) 
                          at android.view.View.performClick(View.java:5204) 
                          at android.view.View$PerformClick.run(View.java:21158) 
                          at android.os.Handler.handleCallback(Handler.java:739) 
                          at android.os.Handler.dispatchMessage(Handler.java:95) 
                          at android.os.Looper.loop(Looper.java:148) 
                          at android.app.ActivityThread.main(ActivityThread.java:5461) 
                          at java.lang.reflect.Method.invoke(Native Method) 
                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                          at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132) 

ここAddMoney活動

package com.example.alkesh.expensemanager101; 

import android.content.Context; 
import android.content.Intent; 
import android.database.sqlite.SQLiteDatabase; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class AddMoney extends AppCompatActivity implements View.OnClickListener{ 

    Button Save,Cancel; 
    EditText expText; 
    int[] expense=new int[100]; 
    int temp=900; 
    int c=0; 
    int sum=0; 
    String DBOnce; 

    private SQLiteDatabase db; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add_money); 

     expText=(EditText)findViewById(R.id.expense); 

     Cancel=(Button)findViewById(R.id.cancelbutton); 
     Cancel.setOnClickListener(this); 

     Save = (Button)findViewById(R.id.savebutton); 
     Save.setOnClickListener(this); 

     CreateDatabase(); 
     } 





    @Override 
    public void onClick(View view) { 

     if(view== Save){ 

      insertIntoDatabase(); 

     } 

     if(view==Cancel){ 
      Intent intent =new Intent(AddMoney.this,MainActivity.class); 
      startActivity(intent); 
      finish(); 
     } 

    } 

    protected void CreateDatabase(){ 
     db=openOrCreateDatabase("MoneyDB", Context.MODE_PRIVATE,null); 
     db.execSQL("CREATE TABLE IF NOT EXISTS money(ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR);"); 
    } 



    protected void insertIntoDatabase(){ 
     String amount = expText.getText().toString().trim(); 

     if(amount.equals("")){ 
      Toast.makeText(this,"Please enter your expense or press Cancel to go back",Toast.LENGTH_LONG).show(); 
      return; 
     } 

     String query="ENTER INTO money (name) VALUES ('"+amount+"');"; 
     db.execSQL(query); 
     Toast.makeText(this,"Expense Saved",Toast.LENGTH_LONG).show(); 


    } 

} 

のための私のコードはここにMainActivityのための私のコードだのです。 AddMoney活動関数insertIntoDatabaseで

package com.example.alkesh.expensemanager101; 

import android.content.Intent; 
import android.os.Parcelable; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 

    Button Add; 
    TextView expense; 
    int c=0; 
    String DBonce="0"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     Add = (Button) findViewById(R.id.addbutton); 
     Add.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(MainActivity.this, AddMoney.class); 
       intent.putExtra("counter", DBonce); 
       startActivity(intent); 
      } 
     }); 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menuhome,menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch(item.getItemId()){ 
      case R.id.feedback:{} 
      break; 

      case R.id.exit: finish(); 
       break; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 
+1

'正確に、(名)VALUES( '25')'あなたはこれが何をすべきかを期待しますお金に入るを挿入します変更? – njzk2

答えて

0

()クエリが

+0

うん、私は完全に忘れてしまった、ただそれを修正した...働いている.. – user6600400

+0

この問題には関係ないが、データベースを一度しか作成しない場合はどうすればよいですか? MainActivityにするか、このアクティビティでも作成できますか?もしそうなら、私はこのアクティビティと呼ぶたびに新しいデータベースの作成をどうやって防ぐのですか? – user6600400

+0

あなたは、アプリケーションが開かれたときに一度だけ呼び出されるので、onCreateメソッド内でMainActivityで作成することができます – Nofi

関連する問題