gpt4 book ai didi

java - 如何在android mysql中获取单个列

转载 作者:行者123 更新时间:2023-11-29 19:11:49 25 4
gpt4 key购买 nike

我怎样才能使用 android 来获取单个列。而不是从数据库获取所有内容。我只想获取 full_name="john"的列。

DataParser.jave

public class DataParser  extends AsyncTask<Void,Void,Integer>{

Context c;
ListView lv;
String jsonData;

ProgressDialog pd;
ArrayList<Person> persons=new ArrayList<>();

public DataParser(Context c, ListView lv, String jsonData) {
this.c = c;
this.lv = lv;
this.jsonData = jsonData;
}

@Override
protected void onPreExecute() {
super.onPreExecute();

pd=new ProgressDialog(c);
pd.setTitle("Parse");
pd.setMessage("Parsing...Please wait");
pd.show();
}

@Override
protected Integer doInBackground(Void... params) {
return this.parseData();
}

@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);

pd.dismiss();
if(result==0)
{
Toast.makeText(c,"Unable to parse",Toast.LENGTH_SHORT).show();
}else {
//CALL ADAPTER TO BIND DATA
CustomAdapter adapter=new CustomAdapter(c,persons);
lv.setAdapter(adapter);
}
}



private int parseData()
{
try {
JSONArray ja=new JSONArray(jsonData);
JSONObject jo=null;

persons.clear();
Person s=null;




for(int i=0;i<ja.length();i++) {


jo = ja.getJSONObject(i);


int id = jo.getInt("id");
String name = jo.getString("full_name");
String sex = jo.getString("sex");
String location = jo.getString("location");


s = new Person();
s.setId(id);
s.setFull_name(name);
s.setSex(sex);
s.setLocation(location);


persons.add(s);



}

return 1;




} catch (JSONException e) {
e.printStackTrace();
}

return 0;
}

}

下载器.java

public class Downloader extends AsyncTask<Void,Void,String> {

Context c;
String urlAddress;
ListView lv;

ProgressDialog pd;

public Downloader(Context c, String urlAddress, ListView lv) {
this.c = c;
this.urlAddress = urlAddress;
this.lv = lv;
}

@Override
protected void onPreExecute() {
super.onPreExecute();

pd=new ProgressDialog(c);
pd.setTitle("Fetch");
pd.setMessage("Fetching....Please wait");
pd.show();
}

@Override
protected String doInBackground(Void... params) {
return this.downloadData();
}


@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);

pd.dismiss();

if(s==null)
{
Toast.makeText(c,"Unsuccessfull,Null
returned",Toast.LENGTH_SHORT).show();
}else
{
//CALL DATA PARSER TO PARSE
DataParser parser=new DataParser(c,lv,s);
parser.execute();

}


}


private String downloadData()
{
HttpURLConnection con=Connector.connect(urlAddress);
if(con==null)
{
return null;
}

InputStream is=null;
try {

is=new BufferedInputStream(con.getInputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(is));

String line=null;
StringBuffer response=new StringBuffer();

if(br != null)
{
while ((line=br.readLine()) != null)
{
response.append(line+"\n");
}

br.close();

}else
{
return null;
}

return response.toString();

} catch (IOException e) {
e.printStackTrace();
}finally {
if(is != null)
{
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}


return null;
}
}

连接器.java

public class Connector {

public static HttpURLConnection connect(String urlAddress)
{
try {
URL url=new URL(urlAddress);
HttpURLConnection con= (HttpURLConnection) url.openConnection();

//SET PROPS
con.setRequestMethod("GET");
con.setConnectTimeout(20000);
con.setReadTimeout(20000);
con.setDoInput(true);

return con;

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return null;
}


}

Person.java

public class Person {
int id;
String full_name, sex, location;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getFull_name() {
return full_name;
}

public void setFull_name(String full_name) {
this.full_name = full_name;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public String getLocation() {
return location;
}

public void setLocation(String location) {
this.location = location;
}

}

自定义适配器.java

public class CustomAdapter extends BaseAdapter {

Context c;
ArrayList<Person> persons;
LayoutInflater inflater;

public CustomAdapter(Context c, ArrayList<Person> persons) {
this.c = c;
this.persons = persons;

//INITIALIE
inflater= (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {
return persons.size();
}

@Override
public Object getItem(int position) {
return persons.get(position);
}

@Override
public long getItemId(int position) {
return persons.get(position).getId();
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if(convertView==null)
{
convertView=inflater.inflate(R.layout.model,parent,false);
}

TextView nameTxt= (TextView) convertView.findViewById(R.id.nameTxt);
TextView sexTxt= (TextView) convertView.findViewById(R.id.propellantTxt);
TextView locationTxt= (TextView) convertView.findViewById(R.id.descTxt);

nameTxt.setText(persons.get(position).getFull_name());
sexTxt.setText(persons.get(position).getSex());
locationTxt.setText(persons.get(position).getLocation());

//ITEM CLICKS
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(c,persons.get(position).getFull_name(),Toast.LENGTH_SHORT).show();
}
});

return convertView;
}

}

服务器端php文件

<?php 

$host = 'localhost';
$username='root';
$pwd ='';
$db ='user';

$con=mysqli_connect($host,$username,$pwd,$db) or die('Unable to connect');
if(mysqli_connect_error($con))
{
echo "Failed to Connect to Database ".mysqli_connect_error();
}

$query=mysqli_query($con,"SELECT * FROM person");
if($query)
{
while($row=mysqli_fetch_array($query))
{
$data[]=$row;
}
print(json_encode($data));
}else
{
echo('Not Found ');
}
mysqli_close($con);
?>

mainactivity.java

public class MainActivity extends AppCompatActivity {

String urlAddress="http://localhost/Android/includes/retrive.php";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

final ListView lv= (ListView) findViewById(R.id.lv);



FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Downloader d=new Downloader(MainActivity.this,urlAddress,lv);
d.execute();
}
});
}

}

在网上获取了代码,但找不到获取单个列的方法

最佳答案

看起来您正在使用的 json 来自 API 响应。在这种情况下,如果您想在 SQL 中执行此操作,则需要在服务器上创建新的 api 和 SQL 查询。如果您只想限制循环中显示的内容,则仅解析您想要的部分。

for(int i=0;i<ja.length();i++) {


jo = ja.getJSONObject(i);


int id = jo.getInt("id");
String name = jo.getString("full_name");

s = new Person();
s.setFull_name(name);

persons.add(s);



}

然后,您还需要更改 Activity 中显示数据的逻辑,并且仅显示 person.name,因为其余属性将为空。

我建议对使用 API 和解析 JSON 进行更多研究,因为您使用的代码似乎没有数据库或 SQL。

关于java - 如何在android mysql中获取单个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43024380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com