编辑表格字段?

时间:2013-09-07 15:23:34

标签: c# sql winforms sqlite

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

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

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

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

我通常只是对字段名称进行硬编码,因为我从未有过允许用户在数据库中更改表格字段名称的选项。

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

这样我总能访问正确的字段名称。

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

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

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? 这是重命名列的解决方案......

How do I rename a column in a SQLite database table?

0 个答案:

没有答案