通过用户值指定在sql数据库中查找记录的方法

时间:2018-08-06 16:09:10

标签: android sql database

我需要一种方法,使用“ SELECT * FROM table_name WHERE ID = getID”将数据库中的数据填充到TextView中。例如,我们现在在数据库中有一条记录,其ID等于“ 1”,我们可以输入在EditText中为“ 1”,然后我们必须单击“获取数据”按钮,然后程序应显示列ID等于“ 1”的数据库中的数据。

MainActivity

tkinter

DatabaseHelper(我现在要创建的方法名称为“ Test”)

public class MainActivity extends AppCompatActivity {
DatabaseHelper db;
EditText name, surname, marks, enterID;
Button addData, showData,queryButton;
TextView testTV;
String idString,nameString,surnameString,marksString;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    db = new DatabaseHelper(this);

    name = (EditText) findViewById(R.id.nameET);
    surname = (EditText) findViewById(R.id.surnameET);
    marks = (EditText) findViewById(R.id.marksET);
    enterID = (EditText) findViewById(R.id.enterIdET);

    addData = (Button) findViewById(R.id.addDataBtn);
    showData = (Button) findViewById(R.id.showDataBtn);
    queryButton = (Button) findViewById(R.id.testBTN);

    testTV = (TextView) findViewById(R.id.showID);




    AddData();
    showData();
    queryTest();
}
public void queryTest() {
    queryButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String givenID = enterID.getText().toString();
            Cursor cursor = db.Test(Integer.parseInt(enterID.getText().toString()));


            if (cursor.moveToFirst()) {
                do {
                    idString = "ID :" + cursor.getString(0);
                    nameString = "Name :" + cursor.getString(1);
                    surnameString = "Surname :" + cursor.getString(2);
                    marksString = "Marks :" + cursor.getString(3);
                } while (cursor.moveToNext());
                {
                    testTV.setText(idString + "\n" + nameString + "\n" + surnameString + "\n" + marksString);
                }
            }


        }
    });
}
public void AddData() {
    addData.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    boolean isInserted = db.insertData(name.getText().toString(),
                            surname.getText().toString(),
                            marks.getText().toString());
                    if (isInserted)
                        Toast.makeText(MainActivity.this, "Data Inserted", Toast.LENGTH_LONG).show();
                    else
                        Toast.makeText(MainActivity.this, "Data not Inserted", Toast.LENGTH_LONG).show();
                }
            }
    );
}

public void showData() {
    showData.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Cursor res = db.getAllData();
            if (res.getCount() == 0) {
                showMessage("Error", "No data");
                return;
            }
            StringBuffer buffer = new StringBuffer();
            while (res.moveToNext()) {

                buffer.append("ID :" + res.getString(0) + "\n");
                buffer.append("Name :" + res.getString(1) + "\n");
                buffer.append("Surname :" + res.getString(2) + "\n");
                buffer.append("Marks :" + res.getString(3) + "\n\n");
            }
            showMessage("Data", buffer.toString());
        }
    });
}


public void showMessage(String title, String message) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setCancelable(true);
    builder.setTitle(title);
    builder.setMessage(message);
    builder.show();
}
}

现在,当我单击“获取数据”按钮时,我将收到交流数据库(数据库是我的应用名称)已停止

2 个答案:

答案 0 :(得分:0)

这是您代码的全部吗?如果是这样,似乎您还没有添加任何数据,这将导致访问数据的问题。

此外,您在Test(String ID)方法中的查询没有任何空格。本质上,您要发送的查询是这样的:

SELECTCOLUMNFROMTABLEWHERE ID = 7

应该是这样的:

从表ID = 7的表中选择列;

希望这对您有所帮助,祝您代码顺利!

答案 1 :(得分:0)

此行:

"SELECT "+COL_2+" FROM "+TABLE_NAME+" WHERE ID ="+getID+"''"

必须替换为:

"SELECT * FROM "+TABLE_NAME+" WHERE ID ="+getID