Android 使用预处理语句的SQL异常
也许你会帮助我,而且,这将是非常好的:-D然后我在我的活动中得到这个代码,我想在另一个文本视图中显示这个细节。因此,我打开了任务,但在LogCat的System.out.println中甚至看不到消息。我怎样才能正确使用它Android 使用预处理语句的SQL异常,android,prepared-statement,Android,Prepared Statement,也许你会帮助我,而且,这将是非常好的:-D然后我在我的活动中得到这个代码,我想在另一个文本视图中显示这个细节。因此,我打开了任务,但在LogCat的System.out.println中甚至看不到消息。我怎样才能正确使用它 public static TextView auswahl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
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();
}
}
publicstatictextview-auswahl;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_beschreibung);
auswahl=(TextView)findViewById(R.id.txtauswahl);
setText(GlossarFragment.keyword);
//Öffnen des SQL Befehls zum Einlesen des Eintrages
GetBeschreibungFromDBAsyncTask任务=新建GetBeschreibungFromDBAsyncTask();
task.execute();
列表资源;
试一试{
res=task.get();
for(字符串s:res){
System.out.println(“aaaaaaaaaaaa:+s”);
}
}捕捉(中断异常e){
//TODO Automaticsh generierter Erfassungsblock
e、 printStackTrace();
}捕获(执行例外){
//TODO Automaticsh 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;
}
公共类GetBeschreibungFromDBAsyncTask扩展了AsyncTask{
私有静态字符串QUERY=“从\“Glossar\”中选择\“Beschreibung\”,其中\“Name\”=?;”;
专用字符串ausw;
@凌驾
//我暗示你要在我的名单上写下你的名字
受保护列表doInBackground(字符串…参数){
ausw=BeschreibungActivity.auswahl.toString();
List res=new ArrayList();
试一试{
连接接头;
conn=jdbconnectionmanager.getConnection();
PreparedStatement prepState=conn.prepareStatement(查询);
预状态设置字符串(1,ausw);
ResultSet-Reset=prepState.executeQuery();
while(reset.next()){
res.add(reset.getString(1));
}
prepState.close();
康涅狄格州关闭();
}捕获(SQLException sqle){
//贝伊内姆·费勒(bei einem Fehler)在安维松
系统输出打印项次(“SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS;
printStackTrace();
}
返回res;
}
声明参数的正确方法是使用?
,比如其中someColumn=?
顺便问一下,您想使用哪种数据库?JDBC这可能不是使用区域设置SQLite db的最佳方式(我甚至不知道它是受支持的).我知道,这是一个非常紧急的解决方案。这只是学校的一个项目;-)你能告诉我如何使用更多的参数来实现这一点吗?比如在插入查询中?私有静态字符串查询=“插入到用户”(“ID\”,“EMail\”,“Ort\”,“Passwort\”)值(?,,,;”;您可以使用多个
?
然后使用设置字符串(1,XXX)、设置字符串(2,YYYY)设置值。。。