顾乔芝士网

持续更新的前后端开发技术栈

android 直连数据库查询_简述android中数据库的连接步骤


android 参照 InboundActivity.java 文件的如下代码数据库连接框架,

写一个 查询界面 : 查询语句如下:select CINVCODE,storage_space from AA_Product_data_Details where CINVCODE = '41223'

将查询结果显示到界面上。界面 支持 CINVCODE 字段 的 条件查询,可以为空。会返回多条记录。 不要用异步。要同步查询返回到界面表格里面。

相机逻辑代码不要。只要查询逻辑代码

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:padding="16dp">


<!-- 查询条件输入框 -->

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:gravity="center_vertical">


<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="CINVCODE:"/>


<EditText

android:id="@+id/et_query_cinvcode"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:hint="输入查询条件(可为空)"

android:imeOptions="actionSearch"

android:singleLine="true"/>


<Button

android:id="@+id/btn_query"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="查询"/>


</LinearLayout>


<!-- 查询结果表格 -->

<HorizontalScrollView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="16dp">


<TableLayout

android:id="@+id/table_results"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:stretchColumns="*"

android:shrinkColumns="*">

<!-- 表头将通过代码动态添加 -->

</TableLayout>

</HorizontalScrollView>


</LinearLayout>


package com.example.chuwei_update_new;


import android.os.Bundle;

import android.view.View;

import android.widget.*;

import androidx.appcompat.app.AppCompatActivity;

import java.sql.*;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;


public class QueryActivity extends AppCompatActivity {


private EditText etQueryCinvCode;

private Button btnQuery;

private TableLayout tableResults;


// 数据库配置

private static final String DB_SERVER = "192.168.xxxx";

private static final String DB_NAME = "UFDATA_xxxx";

private static final String DB_USER = "sa";

private static final String DB_PASSWORD = "xxxx";

private static final String DB_URL = "jdbc:jtds:sqlserver://" + DB_SERVER + "/" + DB_NAME;


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_query);


// 初始化UI组件

etQueryCinvCode = findViewById(R.id.et_query_cinvcode);

btnQuery = findViewById(R.id.btn_query);

tableResults = findViewById(R.id.table_results);


// 设置查询按钮点击事件

btnQuery.setOnClickListener(v -> executeQuery());

// 设置键盘搜索按钮监听

etQueryCinvCode.setOnEditorActionListener((v, actionId, event) -> {

if (actionId == EditorInfo.IME_ACTION_SEARCH) {

executeQuery();

return true;

}

return false;

});

}


// 执行数据库查询

private void executeQuery() {

// 获取查询条件

String cinvCode = etQueryCinvCode.getText().toString().trim();

// 清空之前的查询结果

tableResults.removeAllViews();

try {

// 同步执行数据库查询

List<Map<String, String>> results = performDatabaseQuery(cinvCode);

if (results.isEmpty()) {

Toast.makeText(this, "未找到匹配的记录", Toast.LENGTH_SHORT).show();

return;

}

// 创建表头

TableRow headerRow = new TableRow(this);

for (String column : results.get(0).keySet()) {

TextView header = new TextView(this);

header.setText(column);

header.setPadding(10, 10, 10, 10);


header.setBackgroundResource(
R.drawable.table_header_bg); // 创建表头背景样式

header.setTextColor(getResources().getColor(android.R.color.white));

headerRow.addView(header);

}

tableResults.addView(headerRow);

// 填充查询结果

for (Map<String, String> row : results) {

TableRow dataRow = new TableRow(this);

for (String value : row.values()) {

TextView data = new TextView(this);

data.setText(value != null ? value : "N/A");

data.setPadding(10, 10, 10, 10);


data.setBackgroundResource(R.drawable.table_cell_bg); // 创建单元格背景样式

dataRow.addView(data);

}

tableResults.addView(dataRow);

}

} catch (Exception e) {

Toast.makeText(this, "查询失败: " + e.getMessage(), Toast.LENGTH_LONG).show();

e.printStackTrace();

}

}


// 执行数据库查询操作

private List<Map<String, String>> performDatabaseQuery(String cinvCode)

throws ClassNotFoundException, SQLException {

List<Map<String, String>> results = new ArrayList<>();

Connection conn = null;

PreparedStatement stmt = null;

ResultSet rs = null;

try {

// 1. 加载数据库驱动

Class.forName("net.sourceforge.jtds.jdbc.Driver");

// 2. 建立数据库连接

conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);

// 3. 构建SQL查询语句

String sql = "SELECT CINVCODE, storage_space FROM AA_Product_data_Details";

if (!cinvCode.isEmpty()) {

sql += " WHERE CINVCODE = ?";

}

// 4. 创建PreparedStatement

stmt = conn.prepareStatement(sql);

if (!cinvCode.isEmpty()) {

stmt.setString(1, cinvCode);

}

// 5. 执行查询

rs = stmt.executeQuery();

// 6. 处理结果集

ResultSetMetaData metaData = rs.getMetaData();

int columnCount = metaData.getColumnCount();

while (rs.next()) {

Map<String, String> row = new HashMap<>();

for (int i = 1; i <= columnCount; i++) {

String columnName = metaData.getColumnName(i);

row.put(columnName, rs.getString(i));

}

results.add(row);

}

} finally {

// 7. 关闭资源

if (rs != null) rs.close();

if (stmt != null) stmt.close();

if (conn != null) conn.close();

}

return results;

}

}

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言