繁体   English   中英

所有listview数据仅插入一行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM