[英]all listview data insert only one row
我有一个具有多行的ListView
。 当我将ListView中的条目插入到sql数据库中时,所有条目都会插入到一行中。
我使用String构建器从视图中获取所有条目。
我怎么解决这个问题?
StringBuilder sb = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
StringBuilder sb3 = new StringBuilder();
//get data form text view
for(int i=0; i<simpleAdapter.getCount(); i++) {
String a = ((TextView) findViewById(R.id.al)).getText().toString();
String b = ((TextView) findViewById(R.id.sh)).getText().toString();
String c = ((TextView) findViewById(R.id.acc)).getText().toString();
simpleAdapter.getItem(i).toString();
sb.append(a);
sb.append("\n");
sb2.append(b);
sb2.append("\n");
sb3.append(c);
sb3.append("\n");
}
String text = sb.toString();
String text2 = sb2.toString();
String text3 = sb3.toString();
//my sql connection insert query
try {
Connection con = connectionClass.CONN();
if (con == null) {
Toast.makeText(getApplicationContext(), "Error in connection with SQL server", Toast.LENGTH_LONG).show();
} else {
String query = "INSERT INTO suigen.TransAlmiraShelf (Almira, Shelf, AccessionNo) VALUES('" + String.valueOf(text) + "','" + String.valueOf(text2) + "','" + String.valueOf(text3) + "')";
Statement stmt = con.createStatement();
stmt.execute(query);
Toast.makeText(Main13Activity.this, "Your Data Successfully Saved", Toast.LENGTH_LONG).show();
}
}
catch (Exception ex) {
Toast.makeText(getApplicationContext(), "Exceptions", Toast.LENGTH_LONG).show();
}
使用JDBC表获取值列表
Connection connection = DriverManager.getConnection("URL", "USERNAME",
"PASSWORD");
PreparedStatement statement = connection.prepareStatement("select * from
table");
ResultSet resultSet = statement.executeQuery();
if (resultSet != null) {
while (resultSet.next()) {
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
int type = resultSetMetaData.getColumnType(i);
if (type == Types.VARCHAR || type == Types.CHAR) {
System.out.println(resultSet.getString(i));
} else {
System.out.println(resultSet.getLong(i));
}
}
System.out.println("-----------");
}
}
问题在于,在插入sql数据库之前,您要将所有信息添加到字符串生成器中。
您可以通过获取信息来解决此问题,然后立即将其插入数据库中:
ListView listView = ((ListView) findViewById(R.id.listView));
try {
Connection con = connectionClass.CONN();//first you do the connection
if (con == null) {
Toast.makeText(getApplicationContext(), "Error in connection with SQL server", Toast.LENGTH_LONG).show();
} else {
for(int i=0; i<simpleAdapter.getCount(); i++) {//then create the information you're going
View row = simpleAdapter.getView(i, null, listView);
String a = ((TextView) row.findViewById(R.id.al)).getText().toString();
String b = ((TextView) row.findViewById(R.id.sh)).getText().toString();
String c = ((TextView) row.findViewById(R.id.acc)).getText().toString();
sb.append(a);
sb.append("\n");
sb2.append(b);
sb2.append("\n");
sb3.append(c);
sb3.append("\n");
String text = sb.toString();
String text2 = sb2.toString();
String text3 = sb3.toString();
String query = "INSERT INTO suigen.TransAlmiraShelf (Almira, Shelf, AccessionNo) VALUES('" + String.valueOf(text) + "','" + String.valueOf(text2) + "','" + String.valueOf(text3) + "')";
Statement stmt = con.createStatement();
stmt.execute(query);
Toast.makeText(Main13Activity.this, "Your Data Successfully Saved", Toast.LENGTH_LONG).show();
}
}
}
catch (Exception ex) {
Toast.makeText(getApplicationContext(), "Exceptions", Toast.LENGTH_LONG).show();
}
之所以将所有数据都放在一行中,是因为您使用了字符串生成器来构建一个字符串,该字符串包含ListView中的所有信息,而不仅仅是视图中的一行。 然后将其全部放入数据库中。
解决方案是一次插入一个数据库。
how to get row value on every time
StringBuilder sb = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
StringBuilder sb3 = new StringBuilder();
for(int i=0; i<simpleAdapter.getCount(); i++) {
String a = ((TextView) findViewById(R.id.al)).getText().toString();
String b = ((TextView) findViewById(R.id.sh)).getText().toString();
String c = ((TextView) findViewById(R.id.acc)).getText().toString();
simpleAdapter.getItem(i).toString();
sb.append(a);
sb.append("\n");
sb2.append(b);
sb2.append("\n");
sb3.append(c);
sb3.append("\n");
String text = sb.toString();
String text2 = sb2.toString();
String text3 = sb3.toString();
}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.