1

我有一个使用 SQLite 作为数据库的 C# winforms 应用程序,其中有几个表。

该应用程序有一个datagridview表示来自数据库的数据的控件。

我希望用户能够更改数据库表字段,这很容易通过使用 SQL `ALTER 查询。

当用户想要向数据库表中插入一些数据时会出现问题,因为我需要知道表的字段名称才能构造有效的INSERT查询。

我通常只是硬编码字段名称,因为我从来没有允许用户更改数据库中表的字段名称的选项。

我的想法是我的INSERT查询使用datagridview' 的列名,因此,当用户更改表的字段名称时,它也会更改网格的字段名称,并且每次应用程序运行时,网格的列都被命名为与数据库表相同的名称.

这样我总是可以访问正确的字段名称。

或者我可以只使用索引而不是字符串来引用字段吗?

通常我使用此代码插入数据。

class SQLiteDatabase
{
    //...
    public bool Insert(String tableName, Dictionary<String, String> data)
        {
            String columns = "";
            String values = "";
            Boolean returnCode = true;
            foreach (KeyValuePair<String, String> val in data)
            {
                columns += String.Format(" {0},", val.Key.ToString());
                values += String.Format(" '{0}',", val.Value);
            }
            columns = columns.Substring(0, columns.Length - 1);
            values = values.Substring(0, values.Length - 1);
            try
            {
                this.ExecuteNonQuery(String.Format("insert into {0}({1}) values({2});", tableName, columns, values));
            }
            catch(Exception fail)
            {
                MessageBox.Show(fail.Message);
                returnCode = false;
            }
            return returnCode;
        }
     //...
}



 db = new SQLiteDatabase();
    Dictionary<String, String> myData = new Dictionary<String, String>();
    myData.Add("NAME", "something");
    myData.Add("LAST_NAME", "something");
    try
    {
        db.Insert("TABLE_NAME", myData);
    }
    catch(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

编辑:我刚刚读到,在 SQLite 中,无法重命名列、删除列或从表中添加或删除约束.... WTF?这是重命名列的解决方案...

如何重命名 SQLite 数据库表中的列?

4

0 回答 0