Problam将DB写入DataGridView到特定列

时间:2017-01-30 20:46:19

标签: c# mysql winforms datagridview

我有一个problam将我的数据库写入我的DataGridView。

我有3个表(我的数据库),我正在通过选择的值连接所有这些表,如下面的代码所示:

public void ByPeople(string idToSearch)
    {
        string constring = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\sam\Documents\Visual Studio 2015\Projects\roject\roject\DB.mdf;Integrated Security=True";

        using (SqlConnection myconnection = new SqlConnection(constring))
        {

            using (SqlCommand sqlCommand = new SqlCommand("SELECT p.Id, p.FirstName, p.LastName , m.TagNumber, m.Date, m.Group, m.Location, r.Eye, r.Shallow, r.Deep FROM PeopleTable p JOIN MainTable m ON p.Id=m.Id JOIN ResultsTable r ON r.TagNumber=m.TagNumber AND r.Date= m.Date where m.Id=@Id", myconnection))
            {
                sqlCommand.Parameters.AddWithValue("@Id",idToSearch);

                myconnection.Open();

                SqlDataAdapter adap = new SqlDataAdapter(sqlCommand);
                System.Data.DataTable dt = new System.Data.DataTable();
                adap.Fill(dt);
                dataGridView1.DataSource = dt;

            }

        }

    }

我得到一个错误:

"关键字'组'附近的语法不正确"

并且我没有使用任何Group by或类似的东西,也许是因为我有一个名为Group的列?(在我的查询中选择的值中为m.Group),如果我删除m.Group它的工作正常。

和我的第二个问题 - 在我的dataGridView中我已经写了我自己的列名,我想将数据从DB插入到我的dataGridView中的特定列,我该怎么办呢?因为如果我在我的代码中执行它,它会在数据库中插入带有列名称的数据,我不想这样,我想将数据插入到我在datagridview中选择的特定列中的名称那已经存在了。

谢谢!

1 个答案:

答案 0 :(得分:1)

Group是SQL中的保留关键字。您需要在所有保留关键字周围加上括号。

关于您的第二个问题:您可以使用AS关键字

为列的名称添加别名
SELECT p.Id, p.FirstName AS MyColumnName, p.LastName , m.TagNumber, m.[Date]
       , m.[Group], m.[Location], r.Eye, r.Shallow
       , r.Deep 
FROM PeopleTable p 
JOIN MainTable m 
  ON p.Id=m.Id 
JOIN ResultsTable r 
  ON r.TagNumber=m.TagNumber 
  AND r.Date= m.Date 
WHERE m.Id=@Id