Android Studio中的SQLite语法错误

Android Studio中的SQLite语法错误,android,android-studio,android-sqlite,Android,Android Studio,Android Sqlite,我正在写一个应用程序。当我的应用程序崩溃时,我会出现以下错误: android.database.sqlite.SQLiteException:near“@kiit”:编译时出现语法错误(代码1):从LoginMaster中选择*,其中UserID=1505293@kiit.ac.in密码=999 当我输入已成功插入表中的UserID和Password时,即出现错误: package com.harshit.csdp; import android.content.Context; impor

我正在写一个应用程序。当我的应用程序崩溃时,我会出现以下错误:

android.database.sqlite.SQLiteException:near“@kiit”:编译时出现语法错误(代码1):从LoginMaster中选择*,其中UserID=1505293@kiit.ac.in密码=999

当我输入已成功插入表中的
UserID
Password
时,即出现错误:

package com.harshit.csdp;

import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Typeface;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;

public class LoginActivity extends AppCompatActivity {
    private EditText kiitmail, pass;
    private Spinner spn;
    private TextInputLayout inputKiitMail;
    SQLiteDatabase sqldb;
    Button register, login;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        sqldb = openOrCreateDatabase("xyza", Context.MODE_PRIVATE,null);
        final String adminEmail = "admin@kiit.ac.in";
        final String adminPass = "admin123";
        final String adminStatus = "Administrator" ;



        boolean firstRun = getSharedPreferences("preferences", MODE_PRIVATE).getBoolean("firstRun", true);
        if(firstRun){
            getSharedPreferences("preferences", MODE_PRIVATE).edit().putBoolean("firstRun", false).commit();
            Toast.makeText(getApplicationContext(),"First Run Detected.\nDatabase, tables and Administrator account created.",Toast.LENGTH_LONG).show();
            sqldb.execSQL("Create table LoginMaster(UserID varchar, Password varchar,Status varchar)");
            sqldb.execSQL("insert into LoginMaster values('"+adminEmail+"','"+adminPass+"','"+adminStatus+"')");

            sqldb.execSQL("Create table StudentMaster(UserID varchar, RollNo varchar,Batch varchar, Branch varchar, Degree varchar, JoiningYear varchar)");
            sqldb.execSQL("Create table FacultyMaster(UserID varchar, Degree varchar, JoiningYear varchar)");
            sqldb.execSQL("Create table StudentPersonalMaster(UserID varchar, Name varchar, DOB varchar, Gender varchar, Address varchar, MobNumber varchar)");
            sqldb.execSQL("Create table FacultyPersonalMaster(UserID varchar, Name varchar, DOB varchar, Gender varchar, MobNumber varchar)");
            sqldb.execSQL("Create table StudentAcademicMaster(UserID varchar, AcademicAchievement varchar,Sports varchar, Cultural varchar, Others varchar, HighSchool varchar)");
            sqldb.execSQL("Create table StudentTechnicalMaster(UserID varchar, PLanguage varchar,Database varchar, OS varchar, Software varchar, OtherSkill varchar, IndustryExperience varchar, AcademicProject varchar)");
            sqldb.execSQL("Create table NoticeMaster(UserID varchar, Title varchar,Content varchar, Type varchar, Date varchar)");
        }

        kiitmail = (EditText)findViewById(R.id.editText1);
        pass = (EditText)findViewById(R.id.editText2);
        spn  = (Spinner)findViewById(R.id.spinner1);
        login = (Button)findViewById(R.id.button1);



        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(spn.getSelectedItem().toString().equals(adminStatus)){
                    Intent intent = new Intent(getApplicationContext(),AdminPage.class);
                    startActivity(intent);
                }
                else if(verifyLogin()&&spn.getSelectedItem().toString().equals("Student")){
                    String km = kiitmail.getText().toString();
                    Intent studentPage = new Intent(LoginActivity.this, StudentPage.class);
                    studentPage.putExtra("uid",km);
                    startActivity(studentPage);
                }
                else{
                    Toast.makeText(getApplicationContext(),"Fuck you",Toast.LENGTH_LONG).show();
                }

            }
        });


        Typeface font = Typeface.createFromAsset( getAssets(), "fontawesome.ttf" );
        TextView textView7 = (TextView)findViewById(R.id.textView7);
        TextView textView8 = (TextView)findViewById(R.id.textView8);
        textView7.setTypeface(font);
        textView8.setTypeface(font);

        register = (Button)findViewById(R.id.button2);
        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(getApplicationContext(),InitialRegistrationActivity.class);
                startActivity(i);
            }
        });


    }
    public boolean verifyLogin(){
        String checkMailID = kiitmail.getText().toString();
        String checkPassword = pass.getText().toString();
        Cursor cursor = sqldb.rawQuery("Select * from LoginMaster where UserID = "+checkMailID+" and Password = "+checkPassword+";", null);
        if(cursor.getCount() <= 0){
            cursor.close();
            return false;
        }
        cursor.close();
        return true;
    }
}
package com.harshit.csdp;
导入android.content.Context;
导入android.content.Intent;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.graphics.Typeface;
导入android.support.design.widget.TextInputLayout;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.*;
公共类LoginActivity扩展了AppCompatActivity{
私人编辑文本kiitmail,pass;
私人纺纱机;
私有文本输入布局输入kiitmail;
sqlitedatabasesqldb;
按钮注册,登录;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
sqldb=openOrCreateDatabase(“xyza”,Context.MODE_PRIVATE,null);
最后一个字符串adminEmail=”admin@kiit.ac.in";
最后一个字符串adminPass=“admin123”;
最后一个字符串adminStatus=“Administrator”;
boolean firstRun=getSharedReferences(“首选项”,MODE_PRIVATE)。getBoolean(“firstRun”,true);
如果(首次运行){
GetSharedReferences(“首选项”,MODE_PRIVATE).edit().putBoolean(“firstRun”,false).commit();
Toast.makeText(getApplicationContext(),“检测到第一次运行。\n数据库、表和管理员帐户已创建。”,Toast.LENGTH_LONG).show();
execSQL(“创建表LoginMaster(UserID varchar,Password varchar,Status varchar)”;
execSQL(“插入LoginMaster值(““+adminEmail+”、“+adminPass+”、“+adminStatus+”)”);
execSQL(“创建表StudentMaster(UserID varchar、RollNo varchar、Batch varchar、Branch varchar、Degree varchar、JoiningYear varchar)”;
execSQL(“创建表FacultyMaster(UserID varchar,Degree varchar,JoiningYear varchar)”;
execSQL(“创建表StudentPersonalMaster(UserID varchar、Name varchar、DOB varchar、Gender varchar、Address varchar、MobNumber varchar)”;
execSQL(“创建表FacultyPersonalMaster(UserID varchar、Name varchar、DOB varchar、Gender varchar、MobNumber varchar)”;
execSQL(“创建表StudentAcademicMaster(UserID varchar、academicreaction varchar、Sports varchar、Cultural varchar、Others varchar、HighSchool varchar)”;
execSQL(“创建表StudentTechnicalMaster(UserID varchar、PLanguage varchar、Database varchar、OS varchar、Software varchar、OtherSkill varchar、IndustryExperience varchar、academicroject varchar)”;
execSQL(“创建表NoticeMaster(UserID varchar,Title varchar,Content varchar,Type varchar,Date varchar)”;
}
kiitmail=(EditText)findViewById(R.id.editText1);
pass=(EditText)findViewById(R.id.editText2);
spn=(喷丝器)findViewById(R.id.spinner1);
登录=(按钮)findViewById(R.id.button1);
login.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(spn.getSelectedItem().toString().equals(adminStatus)){
Intent Intent=新的Intent(getApplicationContext(),AdminPage.class);
星触觉(意向);
}
else if(verifyLogin()&&spn.getSelectedItem().toString().equals(“学生”)){
字符串km=kiitmail.getText().toString();
Intent studentPage=新Intent(LoginActivity.this,studentPage.class);
学生页面。putExtra(“uid”,km);
startActivity(学生页面);
}
否则{
Toast.makeText(getApplicationContext(),“操你的”,Toast.LENGTH\u LONG.show();
}
}
});
Typeface font=Typeface.createFromAsset(getAssets(),“fontawesome.ttf”);
TextView textView7=(TextView)findViewById(R.id.textView7);
TextView textView8=(TextView)findViewById(R.id.textView8);
textView7.setTypeface(字体);
textView8.setTypeface(字体);
寄存器=(按钮)findViewById(R.id.button2);
register.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent i=新Intent(getApplicationContext(),InitialRegistrationActivity.class);
星触觉(i);
}
});
}
公共布尔验证登录(){
字符串checkMailID=kiitmail.getText().toString();
字符串checkPassword=pass.getText().toString();
Cursor Cursor=sqldb.rawQuery(“从LoginMaster中选择*,其中UserID=“+checkMailID+”和Password=“+checkPassword+”;”,null);

如果(cursor.getCount()以以下方式执行查询:

Cursor cursor = sqldb.rawQuery("Select * from LoginMaster where UserID = \""+checkMailID+"\" and Password = \""+checkPassword+"\";", null);

您必须引用您的查询参数。此外,您的代码易受SQL注入攻击。请勿使用原始查询,但查询api:

您可能缺少用户ID和密码值周围的
,请将查询更改为此,然后尝试从LoginMaster选择
Select*,其中UserID=“+checkMailID+”'和密码='“+checkPassword+”;
在传递字符串时使用
'
。快速需要帮助!!