我有以下错误
"/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);
}
}
答案 0 :(得分:2)
这是你的问题
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);
无论如何,现在你必须卸载并重新安装你的应用程序。
答案 1 :(得分:0)
我很确定你的CREATE_USERS_TABLE String
最后不需要半冒号答案 2 :(得分:0)
创建表格查询:
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 );";