我的c代码中有一个int变量,我正试图在mysql查询中使用它。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data;
using MySql.Data.MySqlClient;
namespace projeV1
{
public partial class ProjeDetay : Form
{
public ProjeDetay()
{
InitializeComponent();
}
private void ProjeDetay_Load(object sender, EventArgs e)
{
int satir_projem = Projeler.satir_proje;
string connectionString = "Server = localhost; Port = ...; Database = ...; Uid = root; Pwd = ...; Allow User Variables=True";
MySqlConnection databaseConnection = new MySqlConnection(connectionString);
MySqlCommand command;
databaseConnection.Open();
command = databaseConnection.CreateCommand();
string myQuery = "select projeAdi from projeler where projeID = @satir_projem";
MySqlDataAdapter dataAdapter = new MySqlDataAdapter(myQuery, databaseConnection);
command.Parameters.Add("@satir_projem", MySqlDbType.Int32).Value = satir_projem;
DataSet DS = new DataSet();
dataAdapter.Fill(DS);
dataGridView_ProjeDetay.DataSource = DS.Tables[0];
MessageBox.Show(Projeler.satir_proje.ToString());
MessageBox.Show(satir_projem.ToString());
}
}
}
(抱歉,如果它看起来像一个混乱的编码,但我是新的在这个^^^)
messagebox窗口正确显示变量的值,因此变量没有问题。当我替换 @satir_projem
例如,从带有类似“2”的数字的查询字符串(参见下面的示例)中,结果是正确的,但是当我在查询中使用@satir\u projem时,它不起作用。我看不出我做错了什么。
查询字符串示例:
"select projeAdi from projeler where projeID = 2"
p、 s1:最初我试图在datagridview中获取所选行的索引(这是一个名为projeler.satir\u proje的变量),这个datagridview用在一个名为“projeler”的表单和另一个表单(名为projedetay)中,将该索引值赋给另一个名为“satir\u projem”的变量,并使用该值从我的数据库中获取相关数据,并将该数据放在另一个位于我的第二个表单中的datagridview(称为datagridview\u projedetay)中。
p、 学生2:我对这个问题做了很多研究,并尝试了许多我在这一过程中遇到的解决方法;然而,他们没有一个为我工作。所以,我来了:)
提前谢谢。
3条答案
按热度按时间bxgwgixi1#
zmeyuzjn2#
只是想详细说明一下,为什么@onur\u saatcioglu的代码会抛出错误。
您正在将@satir\u projem添加到命令中,但是这样添加到命令中的参数没有传递到dataadapter,dataadapter充当数据集和sql server之间的桥梁,用于检索和保存数据。
因此你可以
1) 如莱斯特所说,创建命令
并将命令传递给dataadapter
2) 正如毕加索所说,如果你使用
那么“命令”就没有意义了,你可以直接删除它。
hivapdat3#
您正在为未使用的命令设置参数。相反,你应该使用
DataAdapter.SelectCommand
```dataAdapter.SelectCommand.Parameters.Add(...)