java 与表单变量传递_将整数变量从另一个表单传递到SQL语句中

我正在与一个学校项目合作,我们应该 Build 一个利用SQL数据库的简单预订系统 . 使用的语言是C#和环境Visual Studio Community 2017.我正在尝试构建一个函数,用户从dataGridView1中选择一行并单击“添加新发票按钮” . booking_id从dataGridView1中提取并传递到Form2,其中使用booking_id搜索与预订相关的数据 . 然后,此数据将显示在dataGridView2中,该列表列出了用户指定的一个预订中包含的所有服务 .

数据库包含三个相关表;预订,服务和BoughServices .

Booking 包含 booking_id (INT)列

Services 包含 service_id (INT), name (VARCHAR)和 price (INT)列

BoughtServices ,包含 Booking.booking_id (INT), Service.service_id (INT)和 amount (INT)列

Form1上的代码:

// Establish a class for data.

public static class DataToForm2

{

public static int booking_id;

}

// User clicks button 'Add new invoice'.

private void button_CreateInvoice_Click(object sender, EventArgs e)

{

Form2 f2 = new Form2();

//Note: CurrentRow.Cells[0] contains booking_id.

DataToForm2.booking_id = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value);

f2.Show();

}

Form2上的代码:

private void Form2_Load(object sender, EventArgs e)

{

using(SqlConnection connection = new SqlConnection(connectionString))

{

// Set SQL query string.

string query = "SELECT Service.name, Services.price, BoughtServices.amount " +

"FROM Service " +

"INNER JOIN Service.service_id ON BoughtServices.service_id " +

"INNER JOIN Bookings ON Bookings.booking_id = BoughtServices.booking_id " +

"WHERE " +

"Booking.booking_id = @booking_id";

SqlCommand command = new SqlCommand(query, connection);

// Set query parameters.

command.Parameters.Add("@booking_id", SqlDbType.Int).Value = Form1.DataToForm2.booking_id;

// Run SQL query

var dataAdapter = new SqlDataAdapter(query, connection);

DataSet ds = new DataSet();

dataAdapter.Fill(ds);

dataGridView1.ReadOnly = true;

dataGridView2.DataSource = ds.Tables[0];

}

}

但是,此方法无法正常运行并因错误 System.Data.SqlClient.SqlException: Must declare the scalar variable "@booking_id 而崩溃 . 我花了不少时间来解决这个问题并从教程中找到解决方案,但到目前为止它们都失败了 . 有意思的是,当我将booking_id直接添加到SQL语句时,一切正常 . 换句话说, WHERE Booking.booking_id = 2 就像一个魅力 .

有人可以帮助我,并建议我应该如何格式化我的代码,以便我能够执行所需的操作?先感谢您!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值