在c#中使用MySQL填充数据表

本文关键字:MySQL 填充 数据表 | 更新日期: 2023-09-27 17:49:35

我试图填充一个数据表与结果从MySQL数据库,然而数据表,虽然它是初始化的,不填充。我想用这个DataTable来填充ListView。以下是我为DataTable设置的内容:

    public DataTable SelectCharacters(string loginName)
    {
        this.Initialise();
        string connection = "0.0.0.0";
        string query = "SELECT * FROM characters WHERE _SteamName = '" + loginName + "'";
        if (this.OpenConnection() == true)
        {
            MySqlCommand cmd = new MySqlCommand(query, connection);
            MySqlDataAdapter returnVal = new MySqlDataAdapter(query,connection);
            DataTable dt = new DataTable("CharacterInfo");
            returnVal.Fill(dt);
            this.CloseConnection();
            return dt;
        }
        else
        {
            this.CloseConnection();
            DataTable dt = new DataTable("CharacterInfo");
            return dt;            
        }
    }

对于填充ListView,我有:

 private void button1_Click(object sender, EventArgs e)
    {
        string searchCriteria = textBox1.Text;
        dt = characterDatabase.SelectCharacters(searchCriteria);
        MessageBox.Show(dt.ToString());
        listView1.View = View.Details;
        ListViewItem iItem;
        foreach (DataRow row in dt.Rows)
        {
            iItem = new ListViewItem();
            for (int i = 0; i < row.ItemArray.Length; i++)
            {
                if (i == 0)
                    iItem.Text = row.ItemArray[i].ToString();
                else
                    iItem.SubItems.Add(row.ItemArray[i].ToString());
            }
            listView1.Items.Add(iItem);
        }
    }

我错过了什么吗?MessageBox包含在内,所以我可以看到它是否已填充,但没有运气。

谢谢你的帮助。

在c#中使用MySQL填充数据表

检查您的连接字符串,不要使用

MySqlCommand cmd = new MySqlCommand(query, connection);
MySqlDataAdapter returnVal = new MySqlDataAdapter(query,connection);
DataTable dt = new DataTable("CharacterInfo");
returnVal.Fill(dt);
this.CloseConnection();
return dt;

你可以用这个

MySqlCommand cmd = new MySqlCommand(query, connection);
DataTable dt = new DataTable();
dt.load(cmd.ExecuteReader());
return dt;

嗯,我…我不知道你在这里做了什么,所以我将粘贴我的代码,我填充datagridview:

1)连接应该看起来像这样(如果localhost是您的服务器,否则,服务器机器的IP地址):

string connection = @"server=localhost;uid=root;password=*******;database=*******;port=3306;charset=utf8";

2)查询是可以的(它会返回给你一些东西),但你不应该建立这样的SQL语句。使用参数代替。

3)代码:

void SelectAllFrom(string query, DataGridView dgv)
        {
            _dataTable.Clear();
            try
            {
                _conn = new MySqlConnection(connection);
                _conn.Open();
                _cmd = new MySqlCommand
                {
                    Connection = _conn,
                    CommandText = query
                };
                _cmd.ExecuteNonQuery();
                _da = new MySqlDataAdapter(_cmd);
                _da.Fill(_dataTable);
                _cb = new MySqlCommandBuilder(_da);
                dgv.DataSource = _dataTable;
                dgv.DataMember = _dataTable.TableName;
                dgv.AutoResizeColumns();
                _conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                if (_conn != null) _conn.Close();
            }
        }

每次我想在mysql数据库中显示一些表的内容时,我调用这个方法,传递查询字符串和datagridview name给那个方法。就这样了。

为了方便起见,将这个示例与您的示例进行比较,看看您可以从两者中使用什么。也许,listview不是最适合你的,只是说…

调试您的应用程序,看看您的sql语句/连接字符串是否正确并返回一些值,还验证您的应用程序是否抛出任何异常

您的连接字符串无效。

设置如下:

connection = "Server=myServer;Database=myDataBase;Uid=myUser;Pwd=myPassword;";

参考:mysql连接字符串

下面是代码不能工作的原因:

    连接

  1. mySQL的连接是无效的
  2. 查询

  3. 我猜你想在table中搜索,试试这个查询

string query = "SELECT * FROM characters WHERE _SteamName LIKE '" + loginName + "%'";

注意LIKE%,这有助于列出所有数据。
查看更多细节字符串比较函数