当用户单击一个数据表的一行时,如何显示另一个包含数据库中数据的数据表?



我有两个具有多对多关系的表,因此我创建了另一个具有两个表ID的表。 在我的第一个表单中,我列出了事件表中的记录,当用户单击可见数据表的记录时,我想向用户显示新表中的相应数据,我的代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CW2
{
public partial class EditEventForm : Form
{
DBAccess dBAccess = new DBAccess();
DataTable dtUsers = new DataTable();
public EditEventForm()
{
InitializeComponent();
}
private void buttonBack_Click(object sender, EventArgs e)
{
this.Hide();
MenuForm form = new MenuForm();
form.Show();
}
private void EditEventForm_Load(object sender, EventArgs e)
{
dataGridView2.Hide();
String query = "Select * from Event";
dBAccess.readDatathroughAdapter(query, dtUsers);
dataGridView1.DataSource = dtUsers;
dBAccess.closeConn();
}
private void buttontransfertoDatabase_Click(object sender, EventArgs e)
{
String query = "Select * from Event";
int changes = dBAccess.executeDataAdapter(dtUsers, query);
MessageBox.Show("You made " + changes + " changes");
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
DataTable dt = new DataTable();
dataGridView2.Show();
DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
int eventID = int.Parse(row.Cells[0].Value.ToString());
String query = ("Select * from Event_Contacts where EventID=@eventID");
dBAccess.executeDataAdapter(dt,query);
dataGridView2.DataSource = dt;
dBAccess.closeConn();
}
}
}

执行时出现错误,如下所示:

System.Data.SqlClient.SqlException:"必须声明标量变量"@eventID"。

请协助我解决这个问题!!

不确定DBAccess()是什么,但您需要指定参数@eventID是什么,如果您使用的是DataAdapter这通常是这样完成的,

DataAdapter.SelectCommand.Parameters.AddWithValue("@eventID", yourEventIDValue);

Cahnge;

String query = "Select * from Event_Contacts where EventID=" + eventID.ToString();

最新更新