首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在android sqlit中添加主键

如何在android sqlit中添加主键
EN

Stack Overflow用户
提问于 2015-08-09 23:27:43
回答 2查看 74关注 0票数 0

我已经创建了一个存储学生记录的数据库。但是有一个重复的问题。我给不同的学生输入了相同的学号。但我希望在下面的代码中添加主键。如何将滚动号作为主键。并且还显示消息“该号码已经存在”

代码语言:javascript
运行
复制
     db=openOrCreateDatabase("StudentDB", Context.MODE_PRIVATE, null);
     db.execSQL("CREATE TABLE IF NOT EXISTS student(rollno VARCHAR,name 
     name VARCHAR,marks VARCHAR);");
     public void onClick(View view)
    { 
         if(view==btnAdd)
    {
        if(editRollno.getText().toString().trim().length()==0||
           editName.getText().toString().trim().length()==0||
           editMarks.getText().toString().trim().length()==0)
        {
            showMessage("Error", "Please enter all values");
            return;
        }
        db.execSQL("INSERT INTO student 
        VALUES('"+editRollno.getText()+"','"+editName.getText()+
               "','"+editMarks.getText()+"');");
        showMessage("Success", "Record added");
        clearText();
      }

        if(view==btnDelete)
       {
       if(editRollno.getText().toString().trim().length()==0)
         {
        showMessage("Error", "Please enter Rollno");
        return;
        }
       Cursor c=db.rawQuery("SELECT * FROM student WHERE
         rollno='"+editRollno.getText()+"'", null);     
       if(c.moveToFirst())
       {
        db.execSQL("DELETE FROM student WHERE 
        rollno='"+editRollno.getText()+"'");  
        showMessage("Success", "Record Deleted");
       }
       else
    {
        showMessage("Error", "Invalid Rollno");
    }
    clearText();
    }
    if(view==btnModify)
      {
      if(editRollno.getText().toString().trim().length()==0)
      {
        showMessage("Error", "Please enter Rollno");
        return;
      }
     Cursor c=db.rawQuery("SELECT * FROM student WHERE   
      rollno='"+editRollno.getText()+"'", null);
     if(c.moveToFirst())
      {
        db.execSQL("UPDATE student SET    
        name='"+editName.getText()+"',marks='"+editMarks.getText()+
                "' WHERE rollno='"+editRollno.getText()+"'");
        showMessage("Success", "Record Modified");
        }
    else
    {
        showMessage("Error", "Invalid Rollno");
    }
    clearText();
    }
    if(view==btnView)
    {
    if(editRollno.getText().toString().trim().length()==0)
    {
        showMessage("Error", "Please enter Rollno");
        return;
    }
    Cursor c=db.rawQuery("SELECT * FROM student WHERE   
     rollno='"+editRollno.getText()+"'", null);
      if(c.moveToFirst())
       {
        editName.setText(c.getString(1));
        editMarks.setText(c.getString(2));
      }
       else
       {
        showMessage("Error", "Invalid Rollno");
        clearText();
       }
      }
        if(view==btnViewAll)
       {
     Cursor c=db.rawQuery("SELECT * FROM student", null);
     if(c.getCount()==0)
       {
        showMessage("Error", "No records found");
        return;
        }
    StringBuffer buffer=new StringBuffer();
     while(c.moveToNext())
     {
        buffer.append("Rollno: "+c.getString(0)+"\n");
        buffer.append("Name: "+c.getString(1)+"\n");
        buffer.append("Marks: "+c.getString(2)+"\n\n");
      }
      showMessage("Student Details", buffer.toString());
      }
     if(view==btnShowInfo)
      {
        showMessage("Student Management Application", "Developed By princ");
       }
     }
     public void showMessage(String title,String message)
        {
      Builder builder=new Builder(this);
     builder.setCancelable(true);
    builder.setTitle(title);
    builder.setMessage(message);
    builder.show();
    }
    public void clearText()
    {
     editRollno.setText("");
     editName.setText("");
     editMarks.setText("");
     editRollno.requestFocus();
    }

所以在这段代码中,rollno我想把它作为主键,如果我使用相同的rollno,那么它应该会显示消息“该rollno已经存在”。

EN

回答 2

Stack Overflow用户

发布于 2015-08-09 23:33:29

只需将uniq字段添加到表中,如下所示

代码语言:javascript
运行
复制
uid integer primary key autoincrement

这会解决你的问题

票数 0
EN

Stack Overflow用户

发布于 2015-08-09 23:34:17

代码语言:javascript
运行
复制
public class FoodDbHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "PKFkM.DB";
private static final int DATABASE_VERSION = 1;
private static final String CREATE_QUERY =
        "CREATE TABLE "+ Food.NewDishInfo.TABLE_NAME+"("
                + Food.NewDishInfo.DISH_NAME+" TEXT unique,"
                + Food.NewDishInfo.DISH_QUANTITY+" TEXT NOT NULL,"
                + Food.NewDishInfo.DISH_CALORIE+" INTEGER,"
                + Food.NewDishInfo.DISH_FAT+" TEXT NOT NULL,"
                + Food.NewDishInfo.DISH_PROTEIN+" TEXT NOT NULL,"
                + Food.NewDishInfo.DISH_SUGAR+" TEXT NOT NULL,"
                + Food.NewDishInfo.DISH_CARBOHYDRATES+" TEXT NOT NULL);";
public FoodDbHelper(Context context)
{
    super(context,DATABASE_NAME,null,DATABASE_VERSION);
    Log.e("DATABASE OPERATION","Database created / opened...");
}
@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(CREATE_QUERY);
    Log.e("DATABASE OPERATION","Table created...");


}

我想这样对你完全有帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31905821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档