首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用SQLiteDataAdapter插入带有头列的记录

如何使用SQLiteDataAdapter插入带有头列的记录
EN

Stack Overflow用户
提问于 2015-02-14 19:47:27
回答 1查看 216关注 0票数 0

我是C#的新手,所以要忍受我和我可怕的代码.

我正在使用VS2013开发一个SQLite表单应用程序。

在我的表单中,我有几个“头”字段,下面是一个绑定到dataset的DataGridView,使用下面的code.The标头字段确定要使用下面的select语句加载的数据集。

代码语言:javascript
复制
        private void Grid_Init()
    {
        Open_VCS_Connection();
        string sql_query_main = "SELECT * FROM VCS_DATA WHERE OPERATOR ='" + operator_comboBox.Text.ToString() + "' AND ROTATION = '" + rotation_comboBox.Text.ToString() + "' AND ENTRY_DATE = '" + entry_dateTimePicker.Value.ToShortDateString() + "'";
        main_ds = new DataSet();
        main_da = new SQLiteDataAdapter(sql_query_main, dbConnection);
        sqlcmdBuilder = new SQLiteCommandBuilder(main_da);
        main_ds.Reset();
        main_da.Fill(main_ds);
        main_dataGridView.DataSource = main_ds.Tables[0].DefaultView;
        main_dataGridView.Columns[0].Visible = false; //record_id
        main_dataGridView.Columns[1].Visible = false; //operator
        main_dataGridView.Columns[2].Visible = false; //rotation
        main_dataGridView.Columns[3].Visible = false; //entry_date
        main_dataGridView.Columns[4].Visible = false; //created_date
        main_dataGridView.Columns[5].Visible = false; //updated_date
        Close_VCS_Connection();
    }

这将很好地填充数据网格视图,并允许我使用数据集的main_da.Update(main_ds)方法插入记录,该数据集是我附加到"Save“的。但是,问题是它没有填充隐藏的列。当我尝试删除时,它也会引发错误,但这是另一个问题。

我已经看过许多关于SQLiteDataAdapter和DataGridView,Dataset的教程,但是我无法完全理解如何让它用文本框中的文本填充隐藏的列,这些文本作为我的数据集的头信息。

而且我还没有找到任何真正好的代码示例来做类似这样的事情,而不是专门为数据输入创建一个表单。我希望用户能够直接在DGV中工作。

EN

Stack Overflow用户

回答已采纳

发布于 2015-02-15 21:53:29

好吧,我回答了我自己的问题,现在看起来很简单.

代码语言:javascript
复制
            Open_VCS_Connection();
        string sql_query_main = "SELECT * FROM VCS_DATA WHERE OPERATOR ='" + operator_comboBox.Text.ToString() + "' AND ROTATION = '" + rotation_comboBox.Text.ToString() + "' AND ENTRY_DATE = '" + entry_dateTimePicker.Value.ToShortDateString() + "'";
        main_ds = new DataSet();
        main_da = new SQLiteDataAdapter(sql_query_main, dbConnection);
        sqlcmdBuilder = new SQLiteCommandBuilder(main_da);
        SQLiteCommand sqlcmdInsert = new SQLiteCommand("INSERT INTO VCS_DATA"
        +" (operator, rotation, entry_date, created_date, callsign, veh_type, ntc_number, bumper_number, line_number, dci_orig, dci_repl, pid_orig, pid_repl, pl_status, sawe_kill, sawe_res, cntlr_kill, cntlr_res, weapon, comments)"
        +" VALUES"
        +" (@operator, @rotation, @entry_date, @created_date, @callsign, @veh_type, @ntc_number, @bumper_number, @line_number, @dci_orig, @dci_repl, @pid_orig, @pid_repl, @pl_status, @sawe_kill, @sawe_res, @cntlr_kill, @cntlr_res, @weapon, @comments)");
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@operator", DbType.String) { Value = operator_comboBox.Text.ToString() });
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@rotation", DbType.String) { Value = rotation_comboBox.Text.ToString() });
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@entry_date", DbType.String) { Value = entry_dateTimePicker.Value.ToShortDateString() });
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@created_date", DbType.DateTime) { Value = DateTime.Now.ToLocalTime() });
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@callsign", DbType.String, "callsign"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@veh_type", DbType.String, "veh_type"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@ntc_number", DbType.String, "ntc_number"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@bumper_number", DbType.String, "bumper_number"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@line_number", DbType.String, "line_number"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@dci_orig", DbType.Byte, "dci_orig"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@dci_repl", DbType.Byte, "dci_repl"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@pid_orig", DbType.Byte, "pid_orig"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@pid_repl", DbType.Byte, "pid_repl"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@pl_status", DbType.Byte, "pl_status"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@sawe_kill", DbType.Byte, "sawe_kill"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@sawe_res", DbType.Byte, "sawe_res"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@cntlr_kill", DbType.Byte, "cntlr_kill"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@cntlr_res", DbType.Byte, "cntlr_res"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@weapon", DbType.Byte, "weapon"));
        sqlcmdInsert.Parameters.Add(new SQLiteParameter("@comments", DbType.String, "comments"));
        main_da.InsertCommand = sqlcmdInsert;

        main_da.Fill(main_ds);
        main_dataGridView.DataSource = main_ds.Tables[0].DefaultView;

因此,在我看到的示例中,他们指出,我可以使用参数为命令生成器编写自己的自定义InsertCommand。通常来源于表单中的其他字段。我没有看到的示例是将参数返回到dataset,还是从insert语句中获取参数?!?如果我知道,但是它只需引用列名和表单中的参数就行了。所以这就是我的例子!

为SQLCommandBuilder竖起拇指。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28519574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档