mysql查询中的c变量无法识别

osh3o9ms  于 2021-06-17  发布在  Mysql
关注(0)|答案(3)|浏览(355)

我的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:我对这个问题做了很多研究,并尝试了许多我在这一过程中遇到的解决方法;然而,他们没有一个为我工作。所以,我来了:)
提前谢谢。

bxgwgixi

bxgwgixi1#

MySqlConnection databaseConnection = new MySqlConnection(connectionString);
MySqlCommand command;

string myQuery = "select projeAdi from projeler where projeID = @satir_projem";

databaseConnection.Open();

command = new MySqlCommand(myQuery, databaseConnection);

MySqlDataAdapter dataAdapter = new MySqlDataAdapter(command);
zmeyuzjn

zmeyuzjn2#

只是想详细说明一下,为什么@onur\u saatcioglu的代码会抛出错误。
您正在将@satir\u projem添加到命令中,但是这样添加到命令中的参数没有传递到dataadapter,dataadapter充当数据集和sql server之间的桥梁,用于检索和保存数据。
因此你可以
1) 如莱斯特所说,创建命令

command = new MySqlCommand(myQuery, databaseConnection);

并将命令传递给dataadapter

MySqlDataAdapter dataAdapter = new MySqlDataAdapter(command);

2) 正如毕加索所说,如果你使用

dataAdapter.SelectCommand.Parameters.AddWithValue("@satir_projem", satir_projem);

那么“命令”就没有意义了,你可以直接删除它。

hivapdat

hivapdat3#

您正在为未使用的命令设置参数。相反,你应该使用 DataAdapter.SelectCommand ```
dataAdapter.SelectCommand.Parameters.Add(...)

相关问题