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+”;
在传递字符串时使用'
。快速需要帮助!!