2016-09-12 13 views
-3

에서 이러한 열입니다.3 열, <strong>이름, 암호</strong> 및 <strong>이미지</strong> 구성 내가 <code>SQLite</code>에서 테이블 이름 <strong>사용자에게</strong>을 만든 SQLite는

내가 SQLite에서 이미지를 검색하기 위해 노력하고 내가 오류가 발생하지만 데이터를 삽입 할 때, 그것은 잘 작동 ImageView에 배치 MyDatabaseHelper

public class MyDatabaseHelper extends SQLiteOpenHelper { 
    public static final int DATABASE_VERSION=1; 
    public static final String DATABASE_NAME="mm.db"; 
    public static final String TABLE_USER="User"; 
    public static final String KEY_NAME="Name"; 
    public static final String KEY_PASSWORD="Password"; 
    public static final String KEY_IMAGE="Image"; 
    public static final String ID="id"; 

    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("create table " + TABLE_USER + " (" + ID + " INTEGER PRIMARY KEY ,Name TEXT,Password TEXT,Image BLOB)"); 
    } 

    public void onUpgrade(SQLiteDatabase db, int oldVersion,int newVersion) { 
     Log.w(MyDatabaseHelper.class.getName(), "Upgrading database from version" + oldVersion + "to" + newVersion + ",which will destroy all old data"); 
     db.execSQL("Drop TABLE IF EXISTS " + TABLE_USER); 
     onCreate(db); 
    } 

    public MyDatabaseHelper(Context context) 
    { 
     super(context, DATABASE_NAME,null,1); 
    } 
} 

.

MainActivity

public class MainActivity extends AppCompatActivity { 
    EditText name; 
    private MyDatabaseHelper mdb=null; 
    private SQLiteDatabase database= null; 
    ImageView imageView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mdb = new MyDatabaseHelper(this); 
     database = mdb.getWritableDatabase(); 
     Button createAccount = (Button) findViewById(R.id.btnLinkToRegisterScreen); 
     Bitmap picture = BitmapFactory.decodeResource(getResources(), R.mipmap.profile); 
     imageView = (ImageView) findViewById(R.id.imgProfilePicture); 
     imageView.setImageBitmap(getRoundedBitmap(picture)); 
     name = (EditText) findViewById(R.id.name); 

     createAccount.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       String personName = name.getText().toString(); 
       String selectQuery = " SELECT " + MyDatabaseHelper.KEY_IMAGE + " FROM " + MyDatabaseHelper.TABLE_USER + " WHERE " + MyDatabaseHelper.KEY_NAME + " = " +personName; 
       Cursor cursor = database.rawQuery(selectQuery, null); 
       if (cursor.moveToFirst()) { 
        byte[] temp_image = cursor.getBlob(1); 
        Bitmap bitmap = BitmapFactory.decodeByteArray(temp_image, 0, temp_image.length); 
        imageView.setImageBitmap(bitmap); 
       } 
      } 
     }); 
    } 
} 

오류

09-12 17:33:09.083 14231-14231/? E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    android.database.sqlite.SQLiteException: no such column: alex (code 1): , while compiling: SELECT Image FROM User WHERE Name = alex 
      at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
      at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:888) 
      at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:499) 
      at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
      at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
      at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37) 
      at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 
      at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 
      at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253) 
      at com.example.seng.healthyapp.MainActivity$1.onClick(MainActivity.java:76) 
      at android.view.View.performClick(View.java:4230) 

알렉스 실제로 내가 입력 한 사용자 이름이지만 이러한 열을 말했다.

+0

제거 응용 프로그램처럼 작은 따옴표에 문자열을 동봉하고 다시 실행합니다. 그것은 작동합니다 :) –

+1

'' ''' –

+1

** SQL 기초 **에'alex'를 넣어야합니다! '어디 이름 = '알렉스'. 또는 ** 바인딩 된 매개 변수 **를 사용하십시오. –

답변

0

SELECT Image FROM User WHERE Name = 'alex' 
+0

Where 절을 갖고 싶다면 어떻게해야합니까? – John

+0

문자열 selectQuery = "SELECT"+ MyDatabaseHelper.KEY_IMAGE + "FROM"+ MyDatabaseHelper.TABLE_USER + "WHERE"+ MyDatabaseHelper.KEY_NAME + "= '"+ personName + "'"; – iyu

+0

따옴표로 묶어야합니다. – iyu

관련 문제