繁体   English   中英

数据库数据不记录

[英]database data doesn't record

我有以下错误

    "/SQLiteLog﹕ (1) near "TABLEusers": syntax error
    System.err﹕ android.database.sqlite.SQLiteException: near "TABLEusers": syntax error (code 1): , while compiling: CREATE TABLEusers(_id(INTEGER PRİMARY KEY AUTOINCREMENT ,u_nameTEXT NOT NULL,u_passTEXT NOT NULL);"

  1023-1023/com.example.dogruprint.dogruprint2 E/SQLiteLog﹕ (1) near ")": syntax error

--------------------- DATABASE.java -------------------------- -----------

package com.example.dogruprint.dogruprint2;

import android.app.Dialog;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

import java.sql.SQLException;


public class Database {


    public static final String KEY_ROWID = "_id";
    public static final String KEY_NAME = "u_name";
    public static final String KEY_PASS = "u_pass";

    private static final String DB_NAME = "app";
    private static final String DB_TABLE = "users";
    private static final int version = 1;


    private SQLiteDatabase ourDatabase;
    private DBHelper ourHelper;
    private Context ourContext;
    private SQLiteDatabase writableDatabase;


    public Database(Context context) {

        ourContext = context;

    }

    public SQLiteDatabase getWritableDatabase() {
        return writableDatabase;
    }


    public class DBHelper extends SQLiteOpenHelper {


        public DBHelper(Context context)

        {
            super(context, DB_NAME, null, version);
        }


        @Override
        public void onCreate(SQLiteDatabase db) {

          /* db.execSQL("CREATE TABLE" + DB_TABLE + "("
                    + KEY_ROWID + "(INTEGER PRIMARY KEY AUTOINCREMENT ,"
                    + KEY_NAME + "TEXT NOT NULL,"
                    + KEY_PASS + "TEXT NOT NULL);");
*/
             String CREATE_USERS_TABLE = "CREATE TABLE " + DB_TABLE + "(" + KEY_ROWID +
                    " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + KEY_PASS + " TEXT,"
                     + ");";


            db.execSQL(CREATE_USERS_TABLE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXIST" + DB_TABLE);


        }


    }

    public Database open() throws SQLException {


        ourHelper = new DBHelper(ourContext);

        ourDatabase = ourHelper.getWritableDatabase();

        return this;


    }

    public Database close() {

        ourHelper.close();
        return this;


    }

    public void addThat(String name, String pass) {


        ContentValues cv = new ContentValues();

        cv.put(KEY_NAME, name);
        cv.put(KEY_PASS, pass);
        ourDatabase.insert(DB_TABLE, null, cv);


    }
}

------------------------------ siparisekle.java ----------------- -----------

package com.example.dogruprint.dogruprint2;

import android.app.ActionBar;
import android.app.Activity;
import android.app.Dialog;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.io.IOException;
import java.sql.SQLException;

import static android.R.*;


public class siparisekle extends Activity {


    private AutoCompleteTextView act1, act2, act3;

    private  EditText edittxt1;

    EditText etName,etPass;
    TextView tvResult;
    Button bSave;
    Button bShow;


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

        install_elements();

        final Database db = new Database(this);


        bSave.setOnClickListener(new View.OnClickListener()
        {

            @Override
            public void onClick(View v)
            {

                boolean ok = true;
                String name = etName.getText().toString();
                String pass = etPass.getText().toString();

                try
                {
                  db.open();
                    db.addThat(name, pass);
                    tvResult.setText(name + "Eklendi");
                    db.close();

                }

                catch (Exception e)
                {
                    ok =false;
                    e.printStackTrace();
                    tvResult.setText("Sorun var");

                }

                finally
                {

                    if(ok)
                    {
                        Dialog d =new Dialog(siparisekle.this);
                        TextView tv = new TextView(siparisekle.this);
                        tv.setText("BASARILI");
                        d.setTitle("Sonuç");
                        d.setContentView(tv);
                        d.show();
                    }
                }
            }
        });
}
protected void install_elements()
{

    etName = (EditText) findViewById(R.id.etName);
    etPass= (EditText) findViewById(R.id.etPass);
    tvResult= (TextView) findViewById(R.id.tvResult);
    bSave= (Button) findViewById(R.id.bSave);
    bShow= (Button) findViewById(R.id.bShow);

}    
}

这是你的问题

db.execSQL("CREATE TABLE" + DB_TABLE + "("

然后你修好了

String CREATE_USERS_TABLE = "CREATE TABLE " + DB_TABLE + "(" ....

通过添加缺失的空间。
但是你必须在这里删除最后一个逗号:

 " TEXT,"
                 + ");";

分号只是无用,无害。
但是逗号是错误的,会引起问题。

但你没有解决这个问题:

 db.execSQL("DROP TABLE IF EXIST" + DB_TABLE);

你也需要这里的空间

 db.execSQL("DROP TABLE IF EXIST " + DB_TABLE);

无论如何,现在您必须卸载并重新安装您的应用程序。

我很确定你的 CREATE_USERS_TABLE 字符串末尾不需要分号

创建表查询:

 private static final String CREATE_TABLE = " CREATE TABLE " + TABLE_NAME + " ( " + UID + " INTEGER PRIMARY KEY AUTOINCREMENT , "
                + FNAME + " VARCHAR(255) , "
                + LNAME + " VARCHAR(255) ,"
                + PASSWORD + " text ,"
                + EMAIL + " VARCHAR(255) UNIQUE ,"
                + BIRTHDAY + " VARCHAR(255) ,"
                + GENDER + " VARCHAR(255) ,"
                + IMAGE + " text );";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM