如何将MYSQL查询转换为TextBox?

时间:2014-09-29 23:34:59

标签: c# mysql

给出以下代码如何将C#中的MYSQL查询结果导入文本框?我已经尝试了几个小时来弄明白 - 我猜应该很容易。这是以下代码尝试。 BTW来自使用程序化PHP我真的很挣MYSQL和C#,我应该使用不同的代码吗?:

...
using MySql.Data.MySqlClient;

namespace houseDB1
{
    public partial class Form2 : Form
    {
        private string server;
        private string database;
        private string uid;
        private string password;
        private MySqlConnection connection;



        public Form2(string strTextBox)
        {
            InitializeComponent();
            // richTextBox1.Text = strTextBox;
            int num = int.Parse(strTextBox);



            server = "localhost";
            database = "realestate_db";
            uid = "root";
            password = "";
            string connectionString;
            connectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";

            connection = new MySqlConnection(connectionString);
            connection.Open();
            MySqlDataAdapter mySqlDataAdapter;
            mySqlDataAdapter = new MySqlDataAdapter("SELECT `ID`, `lat` , `long` FROM `house` ", connection);
            DataSet DS = new DataSet();
            mySqlDataAdapter.Fill(DS);

            richTextBox1.Text = DS.Tables[0].ToString(); // doesn't work

        }

...

3 个答案:

答案 0 :(得分:1)

您是否有使用TextBox的特殊原因? GridView是正常的方法。

例如你可以这样做:

MySqlConnection conn = new MySqlConnection(connectionString);
MySqlCommand cmd = new MySqlCommand("SELECT `ID`, `lat` , `long` FROM `house`;", conn);
conn.Open();
DataTable dataTable = new DataTable();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);

da.Fill(dataTable);


GridVIew.DataSource = dataTable;
GridVIew.DataBind();

答案 1 :(得分:0)

DS.Tables[0].Rows[0][0].ToString();// gets the first row, first cell

因此,您需要循环表格以填充文本框:

string myRichTextTB = "";
for(int i=0; i< DS.Tables[0].Rows.Count; i++)
  for(int j=0; j< 3/*number of the selected columns*/; j++)
  {
    myRichTextTB = myRichTextTB + DS.Tables[0].Rows[i][j].ToString();
  }

答案 2 :(得分:0)

是的,你一定要放弃做你现在正在做的事情......

这是一种过时的做事方式,效率低下(由于浪费时间),如果您的查询没有参数化,可能会让您容易受到SQL注入攻击。

您需要的是对象关系映射(ORM) ...它是一种与数据库通信的方式,无需编写单行SQL或担心表名,或者列名称,或列是否为可空类型。您只与C#对象进行交互,并且ORM会在您需要时保留数据,它会生成您在幕后手动编写的所有SQL ...

您的Customers table将包含Customer个对象的集合,您的Orders table将包含Order个对象,您可以检索所有给定的客户{{1因为&#39;客户&#39;将有一个Orders属性,您可以导航和检索,而无需编写单行SQL。

那你怎么做的?

首先你需要从NuGet安装实体框架(EntityFramework是微软的ORM)......

最简单的方法是按Collection<Order>并输入CTRL + Q并选择第一个选项......

然后,将其输入控制台....

Package Manager

完成之后...安装this extension,您将使用它来对整个数据库进行反向工程,并将其表示在项目的C#类中。