【发布时间】:2015-04-08 04:43:01
【问题描述】:
我正在尝试为我的代码实现一个 sqlite 数据库来保存基本变量。但是,在模拟器上运行时,出现无列错误。任何见解将不胜感激。 错误:
(1) table reg_info has no column named user_pass
04-08 00:28:35.402 3133-3133/com.example.cowman897.sqlitedatabase E/SQLiteDatabase﹕ Error inserting user_pass=ghd user_ass=ggg user_name=sd
android.database.sqlite.SQLiteException: table reg_info has no column named user_pass (code 1): , while compiling: INSERT INTO reg_info(user_pass,user_ass,user_name) VALUES (?,?,?)
我的代码如下:
public class TableData {
public TableData() {
}
public static abstract class TableInfo implements BaseColumns {
public static final String USER_NAME = "user_name";
public static final String USER_PASS = "user_pass";
public static final String USER_ASS = "user_ass";
public static final String DATABASE_NAME = "user_info";
public static final String TABLE_NAME = "reg_info";
}
}
public class DatabaseOperations extends SQLiteOpenHelper {
public static final int database_version = 3;
public String CREATE_QUERY = "create table " + TableData.TableInfo.TABLE_NAME + " (" + null + " integer primary key autoincrement, " + TableData.TableInfo.USER_NAME + " text not null, " + TableData.TableInfo.USER_PASS + " text not null, " + TableData.TableInfo.USER_ASS + " text not null);";
public DatabaseOperations(Context context) {
super(context, TableData.TableInfo.DATABASE_NAME, null, database_version);
Log.d("Database operations", "Database Created");
}
@Override
public void onCreate(SQLiteDatabase sdb) {
sdb.execSQL(CREATE_QUERY);
Log.d("Database operations", "Table Created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void putInformation(DatabaseOperations dop, String name, String pass, String ass) {
SQLiteDatabase SQ = dop.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(TableData.TableInfo.USER_NAME, name);
cv.put(TableData.TableInfo.USER_PASS, pass);
cv.put(TableData.TableInfo.USER_ASS, ass);
long k = SQ.insert(TableData.TableInfo.TABLE_NAME, null, cv);
Log.d("Database operations", "One raw inserted");
}
}
活动只是
public class MainActivity extends ActionBarActivity {
Button sub;
String Class, Date, Assignment;
EditText Class_Field, Date_Field, Assignment_Field;
Context ctx = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sub = (Button) findViewById(R.id.button);
Class_Field = (EditText) findViewById(R.id.editText);
Date_Field = (EditText) findViewById(R.id.editText2);
Assignment_Field = (EditText) findViewById(R.id.editText3);
sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Class = Class_Field.getText().toString();
Date = Date_Field.getText().toString();
Assignment = Assignment_Field.getText().toString();
DatabaseOperations DB = new DatabaseOperations(ctx);
DB.putInformation(DB, Class, Date, Assignment);
Toast.makeText(getBaseContext(), "Assignment Added", Toast.LENGTH_LONG).show();
finish();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
任何帮助将不胜感激。
【问题讨论】:
-
我认为你的表没有创建...
-
您稍后是否在表格中添加了
user_pass列?有可能一旦创建了数据库然后您更改了数据库,那么新的数据库更改就不会发生。为此,您需要卸载应用程序并再次运行。 @user2850572 -
create 语句中的 null 是什么?
-
这是什么鬼?
"create table " + TableData.TableInfo.TABLE_NAME + " (" + null + " integer primary key autoincrement, "... NULL?!
标签: android database sqlite android-studio