检索在一个空白中创建的数据列表,并将其显示在另一个空白
本文关键字:空白 列表 另一个 显示 数据 创建 一个 检索 | 更新日期: 2023-09-27 18:27:49
我有一个关于将数据从一个方法调用到另一个方法的问题。
基本上,我的任务是压缩和简化我的代码。在这个场景中,我连接到一个.MDB文件并从中读取1位数据。最初,我在所有需要它的地方都有连接字符串,但在了解了越来越多关于类和其他东西之后,我被告知复制和粘贴是不好的。所以我想取我的连接字符串,使其成为……它自己的void,然后用所需位置的变量调用它。问题是如何返回从数据库检索到的数据列表?这是我现在拥有的代码,它运行良好。
string directory = @"C:'";
string[] folders = Directory.GetDirectories(directory, "Rameses-*");
List<string> dataList = new List<string>();
foreach (string foldername in folders)
{
using (var conection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source=" + foldername + "''Program''random.mdb;Jet OLEDB:Database Password=******"))
{
conection.Open();
var query = "Select u_company From t_user";
var command = new System.Data.OleDb.OleDbCommand(query, conection);
var reader = command.ExecuteReader();
while (reader.Read())
{
dataList.Add(reader[0].ToString());
}
reader.Close();
conection.Close();
}
}
error_handling(" Alternate Profiles Loaded into Selector");
profselect.DataSource = dataList;
profselect.SelectedText = dataList.Last();
但我原以为我可以把连接从它的当前位置上取下来,然后做这样的事情,但现在我无法从初始连接中获取数据列表。有什么建议吗?
//Database Connection Base Function
public static void database_link(string query, string foldername)
{
List<string> dataList = new List<string>();
using (var conection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source=" + foldername + "''Program''Random.mdb;Jet OLEDB:Database Password=****"))
{
conection.Open();
var command = new System.Data.OleDb.OleDbCommand(query, conection);
var reader = command.ExecuteReader();
while (reader.Read())
{
dataList.Add(reader[0].ToString());
}
reader.Close();
conection.Close();
}
}
// Ramdata check and load from files and database
private void ramdata_check(object sender, EventArgs e)
{
try
{
string directory = @"C:'";
string[] folders = Directory.GetDirectories(directory, "Myapp-*");
List<string> dataList = new List<string>();
foreach (string foldername in folders)
{
database_link("Select u_company From t_user", foldername);
}
error_handling(" Alternate Profiles Loaded into Selector");
profselect.DataSource = dataList;
profselect.SelectedText = dataList.Last();
}
catch
{}
不要让共享连接调用为void:让它创建连接,打开并返回。使用块会在连接完成时为您关闭连接,这样您就不需要手动关闭它:
public OleDbConnection OpenConnection()
{
var result = new OleDbConnection("My special connection string here"))
result.Open()
return result;
}
public List<string> void DoSomethingWithConnection()
{
using (var connection = OpenConnection());
{
List<string> dataList = new List<string>();
OleDbCommand command = new OleDbCommand("DoSomethingHere", connection);
var reader = command.ExecuteReader();
while (reader.Read())
{
dataList.Add(reader[0].ToString());
}
return dataList;
// The connection is automatically closed when the
// code exits the using block.
}
}