上一篇
listview怎么查询数据库数据库数据
- 数据库
- 2025-07-17
- 6
ListView查询数据库数据,通常需通过适配器(如SimpleAdapter或自定义Adapter)将查询
在开发应用程序时,经常需要从数据库中查询数据并在ListView中展示,以下是关于不同平台下ListView如何查询数据库数据的详细内容:
常见平台及技术
| 平台 | 关键技术 |
|---|---|
| VB.NET | SqlConnection、SqlCommand、SqlDataReader等 |
| Android(Java/Kotlin) | SQLiteOpenHelper、CursorAdapter、Room Persistence Library等 |
| C#(Windows Forms/WPF) | ConfigurationManager、SqlConnection、SqlCommand、SqlDataReader等 |
具体实现步骤
(一)VB.NET中ListView查询数据库数据
- 建立数据库连接
- 使用SqlConnection类,通过连接字符串连接到数据库。 Dim connString As String = "YourConnectionString" Dim conn As New SqlConnection(connString) conn.Open()
- 构建查询语句
- 根据需求编写SQL查询语句,可使用参数化查询防止SQL载入。 Dim searchQuery As String = "SELECT FROM YourTable WHERE YourColumn LIKE '%' + @searchTerm + '%'" Dim cmd As New SqlCommand(searchQuery, conn) cmd.Parameters.AddWithValue("@searchTerm", SearchTextBox.Text)
- 执行查询并填充ListView
- 使用SqlDataReader读取数据,并将每行数据添加到ListView中。 Dim reader As SqlDataReader = cmd.ExecuteReader() While reader.Read() Dim item As New ListViewItem(reader("Column1").ToString()) item.SubItems.Add(reader("Column2").ToString()) item.SubItems.Add(reader("Column3").ToString()) ListView1.Items.Add(item) End While conn.Close()
(二)Android中ListView查询数据库数据
-
创建数据库和表

-
使用SQLiteOpenHelper创建或更新数据库。
public class DBHelper extends SQLiteOpenHelper { private static final String DB_NAME = "my_db"; private static final int DB_VERSION = 1; private static final String TABLE_NAME = "my_table"; private static final String COLUMN_ID = "_id"; private static final String COLUMN_NAME = "name"; public DBHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String createTableQuery = "CREATE TABLE " + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_NAME + " TEXT)"; db.execSQL(createTableQuery); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } }
-
-
查询数据

- 使用SQLiteDatabase的query方法获取Cursor对象。 String[] projection = {DBHelper.COLUMN_ID, DBHelper.COLUMN_NAME}; Cursor cursor = database.query(DBHelper.TABLE_NAME, projection, null, null, null, null, null);
-
设置适配器

- 使用SimpleCursorAdapter将Cursor数据绑定到ListView。 String[] from = {DBHelper.COLUMN_NAME}; int[] to = {android.R.id.text1}; SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, from, to); listView.setAdapter(adapter);
- 读取配置文件获取连接字符串
- 使用ConfigurationManager读取配置文件中的连接字符串。 var connectionString = ConfigurationManager.ConnectionStrings["YourConnectionStringName"].ConnectionString;
- 连接数据库并查询数据
- 使用SqlConnection和SqlCommand执行查询,并使用SqlDataReader读取数据。 using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); using (SqlCommand cmd = new SqlCommand(queryString, conn)) { using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { ListViewItem item = new ListViewItem(reader["ColumnName"].ToString()); listView.Items.Add(item); } } } }
- 设置ListView属性(可选)
- 可设置View属性为Details,并添加列头。 listView.View = View.Details; listView.Columns.Add("Column1", -2, HorizontalAlignment.Left); listView.Columns.Add("Column2", -2, HorizontalAlignment.Left);
- 分页加载:只查询当前页的数据,减少一次性加载的数据量,在C#中使用TOP关键字或ROWNUM进行分页。
- 异步加载:在子线程中执行数据库查询,避免阻塞主线程,在Android中使用AsyncTask或LiveData。
- 复用视图:在适配器中复用ViewHolder,减少视图创建的开销,在Android的`RecyclerView.
(三)C#中ListView查询数据库数据
相关问答FAQs
问题1:如何在ListView中实现模糊搜索?
答案:在构建SQL查询语句时,使用LIKE运算符和通配符进行模糊匹配,在VB.NET中:
Dim searchQuery As String = "SELECT FROM YourTable WHERE YourColumn LIKE '%' + @searchTerm + '%'" cmd.Parameters.AddWithValue("@searchTerm", SearchTextBox.Text)
在Android中,可以使用SQLiteDatabase的rawQuery方法执行类似的模糊查询。
问题2:如何提高ListView加载大量数据的性能?
答案:可以采用以下优化措施: