在Android中

时间:2017-04-05 03:42:39

标签: java android sqlite

好的,所以我在这个项目上工作了好几天,仍在试图找出我的代码有什么问题。 基本上,我有一个带有按钮的片段类,用于根据ReportFragment.java上的edittext输入来搜索数据。它还包含TableLayout。

ReportFragment.java

btnSearch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            DBHandler db = new DBHandler(getActivity());

            SearchReport sc = new SearchReport();
  

从TextView获取文本以进行搜索

            sc.setFrom(from.getText().toString());
            sc.setUntil(until.getText().toString());
            sc.setName(name.getText().toString());

            List<Registration> src = db.getList();

            for(Registration rg : src){

                String a = Integer.toString(rg.getID());
                String b = rg.getName();
                String c = rg.getTo();
                String d = rg.getNeed();
                String e = rg.getNumber();
                String f = rg.getAddress();
                String g = rg.getDate();
  

我在TableLayout

中将字符串设置为textview
                number.setText(a);
                name.setText(b);
                to.setText(c);
                need.setText(d);
                hp.setText(e);
                address.setText(f);
                d.setText(g);
            }
        }
    });

我将从ReportFragment插入的值存储在 SearchReport.java 中写入的全局变量中,并将另一个片段中的其他值存储在 Registration.java

现在另一个类是DBHandler,它作为数据库处理程序工作。

DBHandler.java

  

获取可搜索的报告

public List<Registration> getList(){
    SearchReport sc = new SearchReport();
    List<Registration> crReg = new ArrayList<Registration>();
    String selectQuery = "SELECT  * FROM " + TABLE_REGISTRATION + " WHERE " + DATE_COLUMN + " BETWEEN "
            + sc.getFrom() + " AND " + sc.getUntil() + " AND " + sc.getName();

    Log.d("Query", selectQuery);

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    if(cursor.moveToFirst()){
        do{
            Registration reg = new Registration();
            reg.setID(Integer.parseInt(cursor.getString(0)));
            reg.setName(cursor.getString(1));
            reg.setTo(cursor.getString(2));
            reg.setNeed(cursor.getString(3));
            reg.setNumber(cursor.getString(4));
            reg.setAddress(cursor.getString(5));
            reg.setDate(cursor.getString(6));
            crReg.add(reg);
        } while(cursor.moveToNext());
    }
    return crReg;
}

循环通过 Registration.java 来查看基于报告片段的条件查询的值。

我记录了我的查询,你可以看到。但它将值返回为null。

04-05 11:34:33.150 28414-28414/? D/Query: SELECT  * FROM registrasi WHERE tanggal BETWEEN null AND null AND null

这是我需要的布局。

<TableLayout
                        android:id="@+id/table_main_detail"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:stretchColumns="*">
                        <TableRow
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            >
                            <TextView
                                android:layout_column="0"
                                android:padding="10dp"
                                android:layout_span="1"
                                android:text="No"
                                android:textStyle="bold"
                                />
                            <TextView
                                android:layout_column="1"
                                android:padding="10dp"
                                android:layout_span="1"
                                android:text="Nama"
                                android:textStyle="bold"
                                />
                            <TextView
                                android:layout_column="2"
                                android:padding="10dp"
                                android:layout_span="1"
                                android:text="Ketemu"
                                android:textStyle="bold"
                                />
                            <TextView
                                android:layout_column="3"
                                android:padding="10dp"
                                android:layout_span="1"
                                android:text="Tujuan"
                                android:textStyle="bold"
                                />
                            <TextView
                                android:layout_column="4"
                                android:padding="10dp"
                                android:layout_span="1"
                                android:text="Nomor HP"
                                android:textStyle="bold"
                                />
                            <TextView
                                android:layout_column="5"
                                android:padding="10dp"
                                android:layout_span="1"
                                android:text="Alamat"
                                android:textStyle="bold"
                                />
                            <TextView
                                android:layout_column="6"
                                android:padding="10dp"
                                android:layout_span="1"
                                android:text="Date"
                                android:textStyle="bold"
                                />
                        </TableRow>
                        <TableRow
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            >
                            <TextView
                                android:id="@+id/no_report"
                                android:layout_column="0"
                                android:padding="10dp"
                                android:layout_span="1"
                                android:text="No"
                                android:textStyle="bold"
                                />

                            <TextView
                                android:id="@+id/name_report"
                                android:layout_column="1"
                                android:padding="10dp"
                                android:layout_span="1"
                                android:text="Nama"
                                android:textStyle="bold"
                                />

                            <TextView
                                android:id="@+id/to_report"
                                android:layout_column="2"
                                android:padding="10dp"
                                android:layout_span="1"
                                android:text="Nama"
                                android:textStyle="bold"
                                />
                            <TextView
                                android:id="@+id/need_report"
                                android:layout_column="3"
                                android:padding="10dp"
                                android:layout_span="1"
                                android:text="Ketemu"
                                android:textStyle="bold"
                                />
                            <TextView
                                android:id="@+id/number_report"
                                android:layout_column="4"
                                android:padding="10dp"
                                android:layout_span="1"
                                android:text="Name"
                                android:textStyle="bold"
                                />
                            <TextView
                                android:id="@+id/address_report"
                                android:layout_column="5"
                                android:padding="10dp"
                                android:layout_span="1"
                                android:text="Name ASDK ASJDHAS ASJDH"
                                android:textStyle="bold"
                                />
                            <TextView
                                android:id="@+id/date_report"
                                android:layout_column="6"
                                android:padding="10dp"
                                android:layout_span="1"
                                android:text="Name"
                                android:textStyle="bold"
                                />
                        </TableRow>
                    </TableLayout>

1 个答案:

答案 0 :(得分:0)

你怎么试试这个

public List<Registration> getList(SearchReport sc) 
    List<Registration> crReg = new ArrayList<Registration>();
    String selectQuery = "SELECT  * FROM " + TABLE_REGISTRATION + " WHERE " + DATE_COLUMN + " BETWEEN "
        + sc.getFrom() + " AND " + sc.getUntil() + " AND " + sc.getName();

    SQLiteDatabase db = this.getReadableDatabase();

然后

List<Registration> src = db.getList(sc) ;

然后阅读SQL注入以及代码如何受其影响。