我的代码如下
string str=sbr.ToString();
这里我将从str
中获取SQLLITE中的所有表名foreach (KeyValuePair<string, Dictionary<string, List<string>>> key in tableNames)
// Here i am geting only one n tablenames so i would like to assign str values to tableNames so that it will search for all if my != condition fails
{
if (str.Contains(key.Key))
{
if (key.Key != "DBVERSION")
{
bool verify = false;
if(DBUpdate(tableNames, key.Key)==false)
{
GetEndDate(tableNames, key.Key);
}
DBInsert(tableNames, key.Key);
}
}
}
我想将str
值分配给tablename
字段,我想与key
值进行比较,任何人都可以帮助我吗?
public bool Update(Dictionary<string, Dictionary<string, List<string>>> tableNames, SQLiteConnection m_oConn)
{
bool m_bFlag = false;
SQLiteDataAdapter adp=new SQLiteDataAdapter("select tbl_name from sqlite_master where type='table' order by tbl_name",m_oConn);
DataSet ds=new DataSet();
if (m_oConn.State == ConnectionState.Closed)
{
m_oConn.Open();
}
StringBuilder sbr=new StringBuilder();
StringBuilder collumnNames = new StringBuilder();
adp.Fill(ds);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
sbr.Append(ds.Tables[0].Rows[i][0].ToString()+",");
}
string str=sbr.ToString();
foreach (KeyValuePair<string, Dictionary<string, List<string>>> key in tableNames)
{
if (str.Contains(key.Key))
{
if (key.Key != "DBVERSION")
{
bool verify = false;
if(DBUpdate(tableNames, key.Key)==false)
{
GetEndDate(tableNames, key.Key);
}
DBInsert(tableNames, key.Key);
}
}
else
{
foreach (KeyValuePair<string, List<string>> ColNameKey in key.Value)
{
string strd = "";
List<string> values = ColNameKey.Value;
if(values[0].Contains("-"))
{
strd="DATE";
}
else if (values[0].Contains("'"))
{
strd = "CHAR";
}
else if (values[0].Contains("."))
{
strd = "FLOAT";
}
else
{
strd = "INT";
}
//GetDataTypes(ColNameKey.Key,out strd);
collumnNames.Append(ColNameKey.Key + " "+strd+",");
}
m_oCmd.CommandText = "create table " + key.Key + "(" + collumnNames.ToString().TrimEnd(',') + ")";
m_oCmd.ExecuteNonQuery();
sw.WriteLine(key.Key+" table created");
DBInsert(tableNames, key.Key);
}
}
//m_oConn.Close();
m_bFlag = true;
return m_bFlag;
}
答案 0 :(得分:2)
如果我明白你的意思(我完全不确定)那么你需要这样的事情:
tablenames = new List<string>() { str };
或者这个(对于C#2.0)
tablenames = new List<string>(new string[] { str });
答案 1 :(得分:1)
在你想要达到目标的黑暗中拍摄,我认为你的tableNames
实际上是Dictionary<string, Dictionary<string, List<string>>>
,并且你想以某种方式添加str
。
为此你显然需要两个键。我会打电话给另一个key2
。您可以通过说:
tableNames[key][key2].Add(str);
但是,这假设密钥已经存在于字典中,并且列表已经实例化。如果你不能确定,你需要检查它:
if (!tableNames.ContainsKey(key))
tableNames[key] = new Dictionary<string, List<string>>();
if (!tableNames[key].ContainsKey(key2))
tableNames[key][key2] = new List<string>();
tableNames[key][key2].Add(str);
答案 2 :(得分:0)
非常神秘的问题......但我会按字面意思回答:)
我想将
str
值分配给tablename
字段
您可以使用以下命令执行此操作:
tablename = str;
但是,对于此tablename
,必须是string
类型。如果tablename
是List<string>
,那么你的意思是模棱两可的;如果您的意思是想让tablename
仅包含 str
,那么它就是
tablename = new List<string> { str };
如果您的意思是将 str
添加到列表中,那么
tablename.Add(str);
但是,在后一种情况下,您需要确保首先实例化列表。您可以在该字段的原始声明中执行此操作,例如:
List<string> tablename = new List<string>();
我建议如果tablename
确实是一个列表,您应该考虑将其称为 tablenames
而不是明确。
我希望与
key
值进行比较,任何人都可以帮助我吗?
有几种比较字符串的方法。要与另一个字符串x
进行比较,最常见的字符串是:
key.CompareTo(x) // ← only works if key is not null
string.Compare(key, x)
这些返回-1
,0
或1
,具体取决于key
是否按字典顺序缩小,相同或更大。
比较的相等性:
key.Equals(x) // ← only works if key is not null
string.Equals(key, x)
key == x
这些返回bool
,即true
或false
。