【问题标题】:How do i fill my datatable automatically with the data in my datagridview?如何使用我的 datagridview 中的数据自动填充我的数据表?
【发布时间】:2017-06-29 14:19:05
【问题描述】:

我正在尝试做的是一种自动化,它在 datagridview 中接收数据,然后,我当前的问题,将其保存在 sql 中 我已经做了一些实验,目前我得到的是这个,

GDataPicker();
using (SqlCommand cmd = new SqlCommand())
        {
            cmd.Connection = conn;
            conn.Open();
            for (int x = 0; x < dataGridView1.Rows.Count; x++)
            {
                string strquery = @"INSERT INTO table_teste1 VALUES ("

                + dataGridView1.Rows[x].Cells["Rua"].Value + ", "
                + dataGridView1.Rows[x].Cells["Código Postal"].Value + ", "
                + dataGridView1.Rows[x].Cells["Distrito"].Value + ", "
                + dataGridView1.Rows[x].Cells["Concelho"].Value + ", "
                + dataGridView1.Rows[x].Cells["Freguesia"].Value + ", "
                + dataGridView1.Rows[x].Cells["GPS"].Value + ");";

                cmd.CommandText = strquery;
                cmd.ExecuteNonQuery();


            }
        }
        conn.Close();

这个代码的问题是我一直收到这个 -> System.Data.SqlClient.SqlException: 'Incorrect syntax near 'de'.'

谁能帮帮我,谢谢。

【问题讨论】:

  • 参数化您的查询!它不仅更加更安全,而且您不会遇到这个问题。
  • SQL Insert Query Using C#的可能重复
  • 另外,你在这里插入什么值?目前尚不清楚“de”来自何处,因此您尝试插入的数据似乎干扰了 SQL 语法。 (再次,参数化的另一个原因,否则我希望你对 SQL 注入没问题)
  • 不,我不是,但我不会在网上发布这个数据库,或者类似的东西
  • 我的代码对您有帮助吗? @PedroAlvim

标签: c# sql selenium automation


【解决方案1】:

试试这个并做你的改变

GDataPicker();
conn.Open();

for (int x = 0; x < dataGridView1.Rows.Count; x++)
{
    cmd.Parameters.Add(new SqlParameter("@Rua", SqlDbType.VarChar, 255, "Rua"));
    cmd.Parameters.Add(new SqlParameter("@Codigo Postal", SqlDbType.VarChar, 255, "Codigo Postal"));
    cmd.Parameters.Add(new SqlParameter("@Distrito", SqlDbType.VarChar, 255, "Distrito"));
    cmd.Parameters.Add(new SqlParameter("@Concelho", SqlDbType.VarChar, 255, "Concelho"));
    cmd.Parameters.Add(new SqlParameter("@Freguesia", SqlDbType.VarChar, 255, "Freguesia"));
    cmd.Parameters.Add(new SqlParameter("@GPS", SqlDbType.VarChar, 255, "GPS"));

    cmd.Parameters["@Rua"].Value = dataGridView1.Rows[x].Cells[0].Value.ToString();
    cmd.Parameters["@Codigo Postal"].Value = dataGridView1.Rows[x].Cells[1].Value.ToString();
    cmd.Parameters["@Distrito"].Value = dataGridView1.Rows[x].Cells[2].Value.ToString();
    cmd.Parameters["@Concelho"].Value = dataGridView1.Rows[x].Cells[3].Value.ToString();
    cmd.Parameters["@Freguesia"].Value = dataGridView1.Rows[x].Cells[4].Value.ToString();
    cmd.Parameters["@GPS"].Value = dataGridView1.Rows[x].Cells[5].Value.ToString();

    cmd = new SqlCommand(strquery);
    cmd.Connection = con;

    cmd.ExecuteNonQuery();
}
conn.Close();

【讨论】:

  • 将其标记为已回答,以便帮助其他人并受其指导@PedroAlvim
  • 你在哪里使用 cmd = new SqlCommand (strquery);说我不能使用 cmd,因为他是可变的使用
  • 在这种情况下删除using (SqlCommand cmd = new SqlCommand())@PedroAlvim
  • 如果你还需要什么,现在让我@PedroAlvim
猜你喜欢
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 2014-01-27
  • 2013-10-27
  • 1970-01-01
相关资源
最近更新 更多