如何从数据库中获取数据并将其显示为另一种形式?

时间:2017-03-13 02:12:07

标签: c# mysql

帮助我如何从数据库中获取数据并显示到另一个表单? 这张照片是系统的流程。

流量 我会选择一行 2.出现另一个表单,显示我选择的特定行的StartDate和EndDate。

这些是剩下的错误。

this Code 1

2 个答案:

答案 0 :(得分:0)

在表单之间传递数据:

Form1

  using System;
  using System.Drawing;
  using System.Windows.Forms;
  namespace WindowsFormsApplication1
  {
     public partial class Form1 : Form
   {
       public Form1()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        string nTitle = textBox1.Text;
        string nText = textBox2.Text ;
        Form2 frm = new Form2(nTitle, nText);
        frm.Show();
    }
}
}

Form2

using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
 public partial class Form2 : Form
{
    public Form2()
    {
    }
    public Form2(string title,string txt)
    {
        InitializeComponent();
        this.Text = title;
        label1.Text = txt;
    }
}
}

答案 1 :(得分:0)

以下是您可以选择的选项。

Form2

创建labeltextbox,然后为其命名为idtextbox.text(或任何您想要的)或labelidlabel然后设置从privatepublic的修饰符属性。

然后创建一个从ID基于数据库加载数据的方法,如下所示:

public void yourMethodName()
    {
        string connection = @"datasource = localhost; database=sub; Uid=root; Password=steph";
        MySqlConnection connect = new MySqlConnection(connection);
        string yourQuery = null;

        yourQuery = "SELECT top 1 * from sub.transmittal_transaction WHERE id=@id";
        MySqlCommand executeQuery = new MysqlCommand(yourQuery, connect);
        executeQuery.Parameters.Add("@id", SqlDbType.Int);
        executeQuery.Parameters["@id"].Value = yourtextboxnamehere.Text; // or = your labelname.text
        connect.Open();
        MySqlDataReader datareader = executeQuery.ExecuteReader();
        try
        {
            if (datareader.HasRows)
            {
                datareader.Read();
                yourtextboxnamehere.Text = datareader["id"].ToString();
                startDate.text = datareader["yourStartDateColumnNameHere"].ToString(); // if your using a label it still ends in .text same goes with using textbox to display it on the form.
                endDate.text = datareader["yourEndDateColumnNameHere"].ToString(); // if your using a label it still ends in .text same goes with using textbox to display it on the form.
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

然后在Form1

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.RowIndex >= 0)
        {
            Form2 frm = new Form2();
            frm.yourtextboxnamehere.Text = this.dataGridView1.CurrentRow.Cells[0].Value.ToString();
            frm.ShowDialog();
        }
    } 

以上代码的作用是Form1 cellcontextclick事件将打开Form2然后将datagridview上当前行id的值传递给Form2 labeltextbox然后从那里根据数据库中的startdate读取并显示enddateid。但是,如果你想要在图片上注意到每个页码1 id,那么你需要的不仅仅是这段代码。

这也是一个选择:

executeQuery.Parameters.AddWithValue("@id", yourtextboxnamehere.Text);

而不是:

executeQuery.Parameters.Add("@id", SqlDbType.Int);
executeQuery.Parameters["@id"].Value = yourtextboxnamehere.Text;

但是这个选项被认为是不好的。请阅读此Why we need to stop with AddWithValue