【发布时间】:2013-08-14 15:07:56
【问题描述】:
好的,这是与link 相关联的更大问题,我试图删除但不能再删除。人们说我不应该因为 x y 问题link 而发布部分问题,这很公平。所以它来了。
假设我有一堂课:
public class CustomClass
{
public string Year;
public double val;
public string Tariff;
public string ReportingGroup;
}
我现在有一些过程可以创建一个包含结果的此类列表(实际上它是一个更大的类,但这不重要)。
如果 Access 表还不存在,我现在创建它。为此,我需要班级成员,理想情况下还需要类型(目前都是文本!):
public static void createtable(string path, string tablename, string[] columnnames)
{
try
{
string connectionstring = creadteconnectionstring(path);
OleDbConnection myConnection = new OleDbConnection(connectionstring);
myConnection.Open();
OleDbCommand myCommand = new OleDbCommand();
myCommand.Connection = myConnection;
string columnam = "[" + columnnames[0] + "] Text";
for (int i = 1; i < columnnames.Length; i++)
{
columnam = columnam + ", [" + columnnames[i] + "] Text";
}
myCommand.CommandText = "CREATE TABLE [" + tablename + "](" + columnam + ")";
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
Console.WriteLine("Access table " + tablename + " created.");
}
catch
{
Console.WriteLine("Access table " + tablename + " already exists.");
return;
}
}
注意列名实际上包含自定义类的类成员的名称。然后我将数据粘贴到其中:
public static void appenddatatotable(string connectionstring, string tablename, string datstr, List<CustomClass> values)
{
string commandtext = "INSERT INTO " + tablename + " ([RunDate],[ReportingGroup], [Tariff], [Year], [Quarter]) VALUES(@RunDate, @ReportingGroup, @Tariff, @Year, @Quarter)";
using (var myconn = new OleDbConnection(connectionstring))
{
myconn.Open();
using (var cmd = new OleDbCommand())
{
foreach (var item in values)
{
cmd.CommandText = commandtext;
if (string.IsNullOrEmpty(item.val))
item.val = "";
cmd.Parameters.Clear();
cmd.Parameters.AddRange(new[] { new OleDbParameter("@RunDate", datstr), new OleDbParameter("@ReportingGroup", item.RG), new OleDbParameter("@Tariff", item.tar), new OleDbParameter("@Year", item.yr), new OleDbParameter("@Quarter", item.val)});
cmd.Connection = myconn;
//cmd.Prepare();
cmd.ExecuteNonQuery();
}
}
}
}
这一切都很好。
但是,假设我在我的过程中进行了更改,还需要另一个产生 value2 的计算,那么我需要更改类、createtable 和 appenddatatotable 函数。我只想更新课程。
【问题讨论】: