在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包含在内,所以我可以看到它是否已填充,但没有运气。
谢谢你的帮助。
检查您的连接字符串,不要使用
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连接字符串
下面是代码不能工作的原因:
- 连接
mySQL的连接是无效的 查询
我猜你想在table
中搜索,试试这个查询
string query = "SELECT * FROM characters WHERE _SteamName LIKE '" + loginName + "%'";
注意LIKE
和%
,这有助于列出所有数据。
查看更多细节字符串比较函数