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)
- 根据需求编写SQL查询语句,可使用参数化查询防止SQL注入。
- 执行查询并填充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);
- 使用
(三)C#中ListView查询数据库数据
- 读取配置文件获取连接字符串
- 使用
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);
- 可设置
相关问答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加载大量数据的性能?
答案:可以采用以下优化措施:
- 分页加载:只查询当前页的数据,减少一次性加载的数据量,在C#中使用
TOP
关键字或ROWNUM
进行分页。 - 异步加载:在子线程中执行数据库查询,避免阻塞主线程,在Android中使用
AsyncTask
或LiveData
。 - 复用视图:在适配器中复用
ViewHolder
,减少视图创建的开销,在Android的`RecyclerView.
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/64013.html