80,362
社区成员
发帖
与我相关
我的任务
分享
String sql = "CREATE TABLE " + TABLE_NAME + "(" + ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT ," + NAME + " TEXT,"
+ PASSWORD + " TEXT)";
给你看下示例,注意每个INTEGER、TEXT前面的空格[/quote]
package com.androiddatabase.activity;
import com.example.androiddatabase.ClassTable;
import com.example.androiddatabase.R;
import com.example.androiddatabase.SchemaHelper;
import android.support.v7.app.ActionBarActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SchemaHelper sh = new SchemaHelper(this);
//向数据库加入一个Student
long sid1= sh.addStudent("王博", "cnn", 12);
//加入一个课程 course
long cid1 = sh.addCourse("cnn");
//将课程与学生关联
sh.enrollStudentClass((int)sid1, (int)cid1);
//从课程中找到学生
Cursor c = sh.getStudentsForCourse((int)cid1);
while (c.moveToNext()) {
int colid = c.getColumnIndex(ClassTable.STUDENT_ID);
int sid = c.getInt(colid);
Log.v(String.valueOf(sid),String.valueOf(sid));
System.out.println(sid+"//"+cid1);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.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();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
这个是main的
好像是这里的错?
String sql = "CREATE TABLE " + TABLE_NAME + "(" + ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT ," + NAME + " TEXT,"
+ PASSWORD + " TEXT)";
给你看下示例,注意每个INTEGER、TEXT前面的空格[/quote]
大神帮看看~ 代码在上面 ~~~
package com.example.androiddatabase;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class SchemaHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "adv_data.db";
private static final int DATABASE_VERSION = 1;
public SchemaHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建 学生 表
db.execSQL("CREATE TABLE " + StudentTable.TABLE_NAME + " ("
+ StudentTable.ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ StudentTable.NAME + " TEXT,"
+ StudentTable.STATE + " TEXT,"
+ StudentTable.GRADE + " INTEGER);");
// 创建课程表
db.execSQL("CREATE TABLE " + CourseTable.TABLE_NAME + " ("
+ CourseTable.ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ CourseTable.NAME + " TEXT);");
// 创建中间表 把学生和课程 关联起来
db.execSQL("CREATE TABLE " + ClassTable.TABLE_NAME + " ("
+ ClassTable.ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ ClassTable.STUDENT_ID + " INTEGER,"
+ ClassTable.COURSE_ID + " INTEGER);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
// 一个加同学的函数
public long addStudent(String name, String state, int grade) {
ContentValues cv = new ContentValues();
cv.put(StudentTable.NAME, name);
cv.put(StudentTable.STATE, state);
cv.put(StudentTable.GRADE, grade);
SQLiteDatabase sd = getWritableDatabase();
long result = sd.insert(StudentTable.TABLE_NAME, StudentTable.NAME, cv);
return result;
}
// 一个加课程的函数
public long addCourse(String name) {
ContentValues cv = new ContentValues();
cv.put(CourseTable.NAME, name);
SQLiteDatabase sd = getWritableDatabase();
long result = sd.insert(CourseTable.TABLE_NAME, CourseTable.NAME, cv);
return result;
}
// 有ID号 把 学生和课表关联起来的函数
public Boolean enrollStudentClass(int studentId, int courseId) {
ContentValues cv = new ContentValues();
cv.put(ClassTable.STUDENT_ID, studentId);
cv.put(ClassTable.COURSE_ID, courseId);
SQLiteDatabase sd = getWritableDatabase();
long result = sd.insert(ClassTable.TABLE_NAME, ClassTable.STUDENT_ID, cv);
return (result >= 0);
}
// 从课程表中找到都有哪些学生 函数
public Cursor getStudentsForCourse(int courseId) {
SQLiteDatabase sd = getWritableDatabase();
// 我们只需要返回学生的ID
String[] cols = new String[] { ClassTable.STUDENT_ID };
String[] selectionArgs = new String[] { String.valueOf(courseId) };//转成字符串
// 在数据库中查找
//query 1 表名 2 返回的行 3 筛选条件 4 条件
Cursor c = sd.query(ClassTable.TABLE_NAME, cols, ClassTable.COURSE_ID
+ "=?", selectionArgs, null, null, null);
return c;
}
}
改了这个还有bug,报错还是这个 大神帮看看
String sql = "CREATE TABLE " + TABLE_NAME + "(" + ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT ," + NAME + " TEXT,"
+ PASSWORD + " TEXT)";
给你看下示例,注意每个INTEGER、TEXT前面的空格