我正在从我们的竞争对手写一个数据库导入器到我们的数据库:) 我有一个代码生成器,它创建方法表单导入到我们的数据库,如
public void Test_Import_Customer_1()
// variables
string conn;
string sqlSelect;
string sqlInsert;
int extID;
string name;
string name2;
DateTime date_inserted;
sqlSelect="select id,name,date_inserted from table_competitors_1";
oledbreader reader = new GetOledbRader(sqlString,conn);
while (reader.read())
{
name=left((string)myreader["name"],50); //limitation of my field
date_inserted=myreader["date_inserted"];
sqlInsert=string.Format("insert into table(name,name2,date_inserted)values '{0}', '{1}', {2})",name,name2,date_inserted); //here is the problem name2 "Use of unassigned local variable"
ExecuteSQL(sqlInsert)
}
由于不同的公司数据库有不同的字段,我无法为每个变量设置值,并且有大量的表可以将一个变量用于下一个变量。
喜欢
sqlSelect_Company_1 = "select name,date_inserted from table_1";
sqlSelect_Company_2 = "select name,name2 from table_2";
有没有办法用默认值逐个覆盖每个变量的输入?
答案 0 :(得分:0)
不,这是不可能的。您必须为每个变量分配一个默认值。您不能使用尚未初始化的变量 - 它们可能包含随机值,您当然不希望在数据库中插入随机值!
您实际想要做的是:为每个使用您需要的值的数据库编写单独的方法。没有其他办法,技术上是不可能的。
如果你有大量的目标数据库,有很多方法可以解决这个问题,但如果你不熟悉足够的背景,我不能推荐这个。 (我从你的问题判断你是C#和数据库的新手?如果我错了,请抱歉。)
只需为每个数据库编写一个新方法。
答案 1 :(得分:0)
不是将参数值存储在变量中,而是将它们存储在Dictionary对象中,其中键作为字段名称,值/ params作为值。
创建一个泛型方法,该方法接受表名的字符串和参数的字典。您可以使用字符串构建器来构建sql字符串。