我有一个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中选择的特定列中的名称那已经存在了。
谢谢!
答案 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