好的,所以我在这个项目上工作了好几天,仍在试图找出我的代码有什么问题。 基本上,我有一个带有按钮的片段类,用于根据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>
答案 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注入以及代码如何受其影响。