使用预准备语句的SQL异常

时间:2014-01-30 16:08:46

标签: android prepared-statement

也许你会帮助我,这将是非常好的:-然后我在我的活动中得到这个代码,我想在另一个textview中显示这个细节。所以我打开任务但我甚至没有在LogCat中看到System.out.println中的Message。我该如何正确使用它?

public static TextView auswahl;

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

    auswahl = (TextView) findViewById(R.id.txtauswahl);
    auswahl.setText(GlossarFragment.keyword); 

    //Öffnen des SQL Befehls zum Einlesen des Eintrages
    GetBeschreibungFromDBAsyncTask task = new GetBeschreibungFromDBAsyncTask();
    task.execute();

    List<String> res;
    try {
        res = task.get();
        for(String s:res) {
            System.out.println("AAAAAAAAAAAAAAAA: " + s);
        }
    } catch (InterruptedException e) {
        // TODO Automatisch generierter Erfassungsblock
        e.printStackTrace();
    } catch (ExecutionException e) {
        // TODO Automatisch generierter Erfassungsblock
        e.printStackTrace();
    }

} 

这是从数据库中获取描述的任务。

public class GetBeschreibungFromDBAsyncTask extends AsyncTask<String,Void,List<String>> {

    private static String QUERY = "SELECT \"Beschreibung\" FROM \"Glossar\" WHERE \"Name\" = ?;";
    private String ausw;  

    @Override
    //im Hintergrund die SQL Abfrage ausgeführt und die Ergebnisse in die Liste eingelesen
    protected List<String> doInBackground(String... params) {

        ausw = BeschreibungActivity.auswahl.toString();

        List<String> res = new ArrayList<String>();
        try {
            Connection conn;
            conn = JdbcConnectionManager.getConnection();
            PreparedStatement prepState = conn.prepareStatement(QUERY);
            prepState.setString(1, ausw);
            ResultSet resSet = prepState.executeQuery();

            while(resSet.next()) {
                res.add(resSet.getString(1));
            }

            prepState.close();
            conn.close();
        } catch (SQLException sqle) {
            //bei einem Fehler in der SQL Anweisung
            System.out.println("SSSSSSSSSSSSSSSSSSSSSSSSSSSSS");
            sqle.printStackTrace();
        }
        return res;
    }

1 个答案:

答案 0 :(得分:0)

声明参数的正确方法是使用?,例如where someColumnn = ?

顺便问一下,你想用什么样的数据库? JDBC它可能不是使用语言环境SQLite数据库的最佳方式(我甚至不知道它受支持)。