我已使用jtdsv.1.2.8连接到我的sql服务器
我是jdbc插件的新手,我正在尝试解决这个问题。我也在论坛上查看了相关的问题/答案,但找不到,所以我来问:)
我想要实现的是以更好的方式显示从sql数据库获得的数据,比如listview或tableview。
这是我目前正在使用的代码,我真的不知道如何让它工作
Class Model
public class Model
{
public String nom;
public String prenom;
public String mail;
public String tel;
public String date;
public String caissier;
public String vendeur;
public String estheticienne;;
// Getters and Setters omitted
}
/////////////////////////////////////////////////////////////////////////
public class Magasin extends AppCompatActivity {
ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_magasin);
Button btn = (Button) findViewById(R.id.btnData);
btn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
GetData retrieveData = new GetData();
retrieveData.execute("");
}
});
}
private class GetData extends AsyncTask<String,String,String> {
String msg = "";
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://" +
DbStrings.DATABASE_URL + "/" + DbStrings.DATABASE_NAME;
@Override
protected void onPreExecute(){
}
@Override
protected String doInBackground(String... params){
Connection conn = null;
Statement stmt = null;
List<Model> list = new ArrayList<Model>();
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(DB_URL, DbStrings.USERNAME, DbStrings.PASSWORD);
stmt = conn.createStatement();
String sql = "SELECT * FROM login";
ResultSet rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
while (rs.next()){
Model utilisateur = new Model();
utilisateur.prenom = rs.getString("prenom");
utilisateur.nom = rs.getString("nom");
utilisateur.mail = rs.getString("email");
utilisateur.tel = rs.getString("tel");
utilisateur.date = rs.getString("date");
utilisateur.caissier = rs.getString("caissiere");
utilisateur.vendeur = rs.getString("vendeuse");
utilisateur.estheticienne = rs.getString("estheticienne");
list.add(utilisateur);
}
msg = "Données récupérées !";
rs.close();
stmt.close();
conn.close();
} catch (SQLException connError){
msg = "An exception was thrown for JDBC.";
connError.printStackTrace();
} catch (ClassNotFoundException e) {
msg = "A class not found exception was thrown.";
e.printStackTrace();
}
return msg;
}
}
}
任何意见或答案,以指出我在解决这个问题是非常感谢。
谢谢你的时间。
2条答案
按热度按时间b09cbbtk1#
不要在主线程上执行服务器操作,这是我的项目中的代码
onpostexecute()将返回arraylist,并将其传递给适配器。
使用recyclerview而不是listview
vcirk6k62#
您应该创建一个包含内容行的listview,并在包含标题行的布局上方。并在布局上进行列划分,您将使用它来表示listview上的每一行。
另一种方法是在卷轴中创建tablelayout!