我正在创建一个包含数据库存储的android应用程序,在这里我需要存储浮点值,然后从数据库中检索浮点值到编辑文本字段。当我执行应用程序时,它说“ android.database.sqlite.SQLiteException:靠近“Beforefuseoffsets”:语法错误(代码1):,编译时:Beforefuseoffsets “。我知道这是语法错误,但是我找不到的错误在哪里可以任何人告诉我如何通过这个。 这是我的数据库代码:
package com.lakshman.androidfiles;
import java.io.File;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.view.View;
public class LoginDataBaseAdapter
{
//Database name
static final String DATABASE_NAME = "MilanloginRegistration.db";
static final int DATABASE_VERSION = 1;
public static final int NAME_COLUMN = 1;
public static final String ID ="ID";
// TODO: Create public field for each column in your table.
// SQL Statement to create a new database.
public static final String OFFSETS_B_FUSE = "Beforefuseoffsets";
public static final String OFFSET_VALUE="offsetvalues";
public static DataBaseHelper database_helper;
public Context context_db;
static final String OFFSETS_BC_FUSE ="CREATE TABLE IF NOT EXISTS "+OFFSETS_B_FUSE+" ("+ID+" integer primary key autoincrement, "+OFFSET_VALUE+" INT)";
static float[] offset_entry;
// Variable to hold the database instance
public static SQLiteDatabase db;
// Context of the application using the database.
private static Context context;
// Database open/upgrade helper
private static DataBaseHelper dbHelper;
public LoginDataBaseAdapter(Context _context)
{
context = _context;
dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public LoginDataBaseAdapter open() throws SQLException
{
db = dbHelper.getWritableDatabase();
return this;
}
public void close()
{
db.close();
}
public SQLiteDatabase getDatabaseInstance()
{
return db;
}
public LoginDataBaseAdapter opentoRead() throws android.database.SQLException{
dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
db = dbHelper.getReadableDatabase();
return this;
}
public LoginDataBaseAdapter opentoWrite() throws android.database.SQLException{
dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
db = dbHelper.getWritableDatabase();
return this;
}
public void Close(){
dbHelper.close();
}
public static void insert_offset_Entry(float values)
{
ContentValues newValues = new ContentValues();
newValues.put(OFFSET_VALUE,values);
database_helper = new DataBaseHelper(context,DATABASE_NAME,null,DataBaseHelper.VERSION);
db = database_helper.getWritableDatabase();
db.insert(OFFSETS_B_FUSE,null,newValues);
}
public LoginDataBaseAdapter db_to_write() {
database_helper = new DataBaseHelper(context,DATABASE_NAME,null,DataBaseHelper.VERSION);
db = database_helper.getWritableDatabase();
return this;
}
/*public void Display(View v){
Cursor c = db.rawQuery("select * from MilanloginRegistration", null);
c.moveToFirst();
do{
String username = c.getFloat(c.getColumnIndex(""));
String password = c.getString(1);
}while(c.moveToNext());
}*/
}
这是我的logcat:
12-09 17:10:55.583: E/AndroidRuntime(3187): FATAL EXCEPTION: main
12-09 17:10:55.583: E/AndroidRuntime(3187): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lakshman.androidfiles/com.lakshman.androidfiles.MainActivity}: android.database.sqlite.SQLiteException: near "Beforefuseoffsets": syntax error (code 1): , while compiling: Beforefuseoffsets
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.app.ActivityThread.access$600(ActivityThread.java:141)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.os.Handler.dispatchMessage(Handler.java:99)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.os.Looper.loop(Looper.java:137)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.app.ActivityThread.main(ActivityThread.java:5041)
12-09 17:10:55.583: E/AndroidRuntime(3187): at java.lang.reflect.Method.invokeNative(Native Method)
12-09 17:10:55.583: E/AndroidRuntime(3187): at java.lang.reflect.Method.invoke(Method.java:511)
12-09 17:10:55.583: E/AndroidRuntime(3187): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-09 17:10:55.583: E/AndroidRuntime(3187): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-09 17:10:55.583: E/AndroidRuntime(3187): at dalvik.system.NativeStart.main(Native Method)
12-09 17:10:55.583: E/AndroidRuntime(3187): Caused by: android.database.sqlite.SQLiteException: near "Beforefuseoffsets": syntax error (code 1): , while compiling: Beforefuseoffsets
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1663)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1594)
12-09 17:10:55.583: E/AndroidRuntime(3187): at com.lakshman.androidfiles.DataBaseHelper.onCreate(DataBaseHelper.java:26)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
12-09 17:10:55.583: E/AndroidRuntime(3187): at com.lakshman.androidfiles.LoginDataBaseAdapter.open(LoginDataBaseAdapter.java:47)
12-09 17:10:55.583: E/AndroidRuntime(3187): at com.lakshman.androidfiles.MainActivity.onCreate(MainActivity.java:23)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.app.Activity.performCreate(Activity.java:5104)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
12-09 17:10:55.583: E/AndroidRuntime(3187): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
12-09 17:10:55.583: E/AndroidRuntime(3187): ... 11 more
答案 0 :(得分:0)
删除OFFSETS_B_FUSE与括号之间的空格 OFFSETS_B_FUSE +&#34;(&#34;
<?php
include('../config/connection.php');
if (isset($_POST['submit'])){
if (isset($_GET['encrypt'])){
$get_email = $_GET['email'];
$get_encrypt = $_GET['encrypt'];
$q = "SELECT * FROM users WHERE email = '$get_email'";
$r = mysqli_query($dbc, $q) OR die(mysqli_error());
$row = mysqli_fetch_assoc($r);
$db_encrypt = $row['passreset'];
$db_email = $row['email'];
if ($get_email == $db_email AND $get_encrypt == $db_encrypt){
$newpass = mysqli_real_escape_string($dbc,$_POST['newpass']);
$newpass1 = mysqli_real_escape_string($dbc,$_POST['newpass1']);
$post_email = $_POST['email'];
$encrypt = $_GET['encrypt'];
$passrst = md5(SHA1($newpass));
if ( $newpass == '' OR $newpass1 == '') {
$message = 'Both fields required';
}
if($newpass != $newpass1 ) {
$message = 'passwords dont match, please try again';
} if(strlen($newpass)<6 OR strlen($newpass1)>20) {
$message = 'Password must be 6 to 20 characters';
}
if ($message == ''){
$q = "UPDATE users SET password='$passrst' AND passreset='0' WHERE email='$email'";
$r = mysqli_query($dbc, $q);
}
} else "something went wrong please try again.";
}
}
?>
希望有效!
答案 1 :(得分:0)
请在下面找到代码,希望对您有所帮助
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Created by rohitp on 12/9/2015.
*/
public class DatabaseAdapter {
static String TAG = "LoginDataBaseAdapter";
public static final String OFFSETS_B_FUSE = "Beforefuseoffsets";
public static final String OFFSET_VALUE="offsetvalues";
private static final String ID = "ID" ;
static final String OFFSETS_BC_FUSE ="CREATE TABLE IF NOT EXISTS "+OFFSETS_B_FUSE+" ("+ID+" integer primary key autoincrement, "+OFFSET_VALUE+" INT)";
private static DatabaseHelper mDbHelper;
private static SQLiteDatabase mDb;
private static Context mContext;
private AtomicInteger mDbConnCount = new AtomicInteger();
DatabaseAdapter(Context context){
mContext = context;
mDbHelper = new DatabaseHelper(mContext);
}
public static void openDatabase() throws SQLException {
mDb = mDbHelper.getWritableDatabase();
}
public synchronized boolean closeDatabase() {
try {
if(mDbConnCount.decrementAndGet() == 0) {
mDbHelper.close();
Log.d(TAG, "Database Closed");
}
return true;
} catch (Exception ex) {
Log.e(TAG, ex.getMessage());
return false;
}
}
private synchronized SQLiteDatabase getDB(){
if(mDbConnCount.incrementAndGet() == 1){
openDatabase();
Log.d(TAG,"Database Opened");
}
return mDb;
}
private static class DatabaseHelper extends SQLiteOpenHelper {
// Data base version
private static int databaseVersion = 1;
// Data base name
private static String databaseName = "KVStore.db3";
DatabaseHelper (final Context context) {
super(context, databaseName, null, databaseVersion);
}
@Override
public void onCreate(SQLiteDatabase db) {
try{
db.execSQL(OFFSETS_BC_FUSE);
Log.i(TAG,"Database Successfully Created");
}catch (Exception e){
Log.e(TAG,"Exception in creation "+e.getMessage());
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
public int putInt(int value){
try{
ContentValues args = new ContentValues();
args.put(OFFSET_VALUE,value);
getDB().insert(OFFSETS_B_FUSE,null,args);
return 0;
}catch (Exception e){
Log.e(TAG," Error "+e.getMessage());
return -1;
}
finally {
closeDatabase();
}
}
public ArrayList<Integer> getInt(){
ArrayList<Integer> mInteger = new ArrayList<Integer>();
Cursor reader;
int ret = 0;
String cSQL = "SELECT "+OFFSET_VALUE+" FROM "+OFFSETS_B_FUSE;
try{
reader = getDB().rawQuery(cSQL, null);
if (reader != null && reader.getCount() > 0) {
while(reader.moveToNext()){
mInteger.add(reader.getInt(0));
}
return mInteger;
}
else {
return null;
}
}
catch (Exception ex)
{
Log.e(TAG, " error "+ex.getMessage());
return null;
}
finally {
closeDatabase();
}
}
}
来自活动,您必须按照方法
进行调用 DatabaseAdapter mDataAdp = new DatabaseAdapter(getApplicationContext());
mDataAdp.putInt(20);
mDataAdp.putInt(21);
mDataAdp.putInt(22);
Log.d("Database Output",mDataAdp.getInt().toString());
实际上,您的代码不是线程安全的,因为您正在创建多个数据库实例
你必须调用getDB();函数进入你的方法得到SQLiteDatabase并且必须关闭closeDatabase();两者都是同步的,因此从多线程执行时不会出现异常