C# 检索在一个void中创建的数据列表并在另一个void中显示它
我有一个关于将数据从一个方法调用到另一个方法的问题 基本上,我的任务是压缩和简化我的代码。在这个场景中,我连接到一个.MDB文件并从中读取1位数据。最初,我在所有需要连接字符串的地方都有连接字符串,但在了解了越来越多的类和内容后,我被告知复制和粘贴是不好的。所以我想把我的连接字符串变成它自己的void,然后用所需的变量调用它。问题是如何返回从数据库检索到的数据列表?这是我现在拥有的代码,它运行良好C# 检索在一个void中创建的数据列表并在另一个void中显示它,c#,C#,我有一个关于将数据从一个方法调用到另一个方法的问题 基本上,我的任务是压缩和简化我的代码。在这个场景中,我连接到一个.MDB文件并从中读取1位数据。最初,我在所有需要连接字符串的地方都有连接字符串,但在了解了越来越多的类和内容后,我被告知复制和粘贴是不好的。所以我想把我的连接字符串变成它自己的void,然后用所需的变量调用它。问题是如何返回从数据库检索到的数据列表?这是我现在拥有的代码,它运行良好 string directory = @"C:\"; string[] f
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();
string目录=@“C:\”;
string[]folders=Directory.GetDirectories(目录,“Rameses-*”);
List dataList=新列表();
foreach(文件夹中的字符串foldername)
{
使用(var conction=new System.Data.OleDb.OleDbConnection(“Provider=Microsoft.JET.OleDb.4.0;“+”数据源=“+foldername+”\\Program\\random.mdb;JET-OleDb:Database Password=*******”)
{
conconnect.Open();
var query=“从用户中选择单位”;
var命令=new System.Data.OleDb.OleDbCommand(查询、连接);
var reader=command.ExecuteReader();
while(reader.Read())
{
dataList.Add(读取器[0].ToString());
}
reader.Close();
conconnect.Close();
}
}
错误处理(“加载到选择器的备用配置文件”);
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数据库链接(字符串查询、字符串foldername)
{
List dataList=新列表();
使用(var conction=new System.Data.OleDb.OleDbConnection(“Provider=Microsoft.JET.OleDb.4.0;“+”数据源=“+foldername+”\\Program\\Random.mdb;JET-OleDb:Database Password=**”)
{
conconnect.Open();
var命令=new System.Data.OleDb.OleDbCommand(查询、连接);
var reader=command.ExecuteReader();
while(reader.Read())
{
dataList.Add(读取器[0].ToString());
}
reader.Close();
conconnect.Close();
}
}
//从文件和数据库中检查和加载Ramdata
私有void ramdata_检查(对象发送方,事件参数e)
{
尝试
{
字符串目录=@“C:\”;
string[]folders=Directory.GetDirectories(目录,“Myapp-*”);
List dataList=新列表();
foreach(文件夹中的字符串foldername)
{
数据库链接(“从t_用户中选择u_公司”,文件夹名称);
}
错误处理(“加载到选择器的备用配置文件”);
profselect.DataSource=dataList;
profselect.SelectedText=dataList.Last();
}
抓住
{}
不要使共享连接调用无效:使其创建连接,打开并返回。a将在连接完成时为您关闭连接,因此您无需手动关闭:
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.
}
}
public-OleDbConnection-OpenConnection()
{
var result=new-OleDbConnection(“此处为我的特殊连接字符串”))
结果:Open()
返回结果;
}
公共列表void DoSomethingWithConnection()
{
使用(var connection=OpenConnection());
{
List dataList=新列表();
OleDbCommand命令=新的OleDbCommand(“DoSomethingHere”,连接);
var reader=command.ExecuteReader();
while(reader.Read())
{
dataList.Add(读取器[0].ToString());
}
返回数据列表;
//当发生以下情况时,连接将自动关闭:
//代码退出using块。
}
}
太好了。我做了一些改动,但你的想法帮了我一把!!谢谢