내 응용 프로그램에 내장 데이터베이스가 있습니다. 자산 폴더에 있습니다. 사용자는 버튼 클릭시 데이터베이스에 새 행을 추가 할 수 있어야합니다. 나는 다음과 그것을위한 코드가 내 SQliteOpenHelper 클래스에버튼 클릭시 sqlite 삽입
insertrow.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
db.open();
try
{
String editmacs=editmac.getText().toString();
db.insertrow(editmacs);
// Context context = getApplicationContext();
}
catch (Exception ex)
{
Toast.makeText(getApplicationContext(), "cannot update", Toast.LENGTH_LONG).show();
}
db.close();
}
});
및 관련 방법은 다음과 같습니다
public static SQLiteDatabase myDb;
public static String DATABASE_TABLE="access_points";
public static final String KEY_column1 = "col1";
public static final String KEY_column2 = "col2";
public static final String KEY_column3= "col3";
public static final String KEY_column4 = "col4";
public long insertrow(String editmacs)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_column1, editmacs);
initialValues.put(KEY_column2, "uf");
initialValues.put(KEY_column3, "ub");
initialValues.put(KEY_column4, "uz");
return myDb.insert(DATABASE_TABLE, null, initialValues);
}
문제는 editmacs을 클릭 버튼 (KEY_column1)는 데이터베이스에 삽입되지 않습니다. 그러나 다른 값 (예 : "uz")이 삽입되었습니다 (삽입 된 값을 SQL 쿼리로 테스트 함). buttonpress를 사용하여 삽입하는 동안 나는 예외를 얻지 못한다. 누구든지 edittext의 editmacs 값이 삽입되지 않은 이유를 말할 수 있습니까? 미리 감사드립니다.
나는 Guillaume의 의견 (아래 참조)에서 해결책을 얻었습니다. 삽입과 관련된 쿼리는 정상입니다. 문제는 다른 곳에있다. 다음 코드를보고 :
buttonuserentry.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
db.open();
try
{
String mac = "";
mac = db.getuserentry();
Context context = getApplicationContext();
String text = mac;
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
catch (Exception ex)
{
Context context = getApplicationContext();
CharSequence text = ex.toString();
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
db.close();
}
});
이전에, 내가이 사용하던 : 난의 CharSequence를 사용했기 때문에
CharSequence mac = "";
mac = db.getuserentry();
Context context = getApplicationContext();
String text = mac;
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
, 원래 데이터베이스에서 마지막으로 삽입 된 MAC 주소를 표시했다. 원본 임베디드 데이터베이스는이 열을 텍스트로 선언 했으므로 Sqliteman에서 Text = CharSequence를 의미합니다. 내 예상 mac 주소는 사용자가 마지막으로 입력 한 mac 주소입니다. editmac보기의이 mac 주소는 String으로 변환됩니다. 따라서 CharSequence가 아닌 String으로 검색해야합니다. Guillaume의 도움에 다시 한번 감사의 말씀을 전합니다.
KEY_column2의 데이터 유형과 KEY_column2의 데이터 유형을 비교하십시오. –
값을 확인할 수 있습니다 -> 비어 있거나 없으면 Log.i ("debug", editmacs); – Dezigo
@ Sunil, Sqliteman을 사용하여 포함 된 데이터베이스를 만들었으며 모든 열의 데이터 형식은 Text입니다. –