我需要 Visual Studio 中 C# 的帮助,当我运行应用程序时,它给我的位置 0 没有行


private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{  
if (e.RowIndex >=0) 
{
DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];
int a = int.Parse(row.Cells["ID"].Value.ToString());
i.TrenutniID = a;     
}                    
}

以其他形式

int trenutniID;
public int TrenutniID
{
get
{
return trenutniID;
}
set
{
trenutniID = value;
}
}
private void IzmjeniOsobu_Load(object sender, EventArgs e)
{
Console.WriteLine("potrebni id je : "+ trenutniID);
string queryStr = "SELECT * from abba.osoba where ID=" + trenutniID + ";";
string constring = "datasource=localhost;port=3306;username=root;password=";
MySqlConnection conDataBase = new MySqlConnection(constring);
MySqlCommand cmdDataBase = new MySqlCommand(queryStr, conDataBase);
try
{
MySqlDataAdapter sda = new MySqlDataAdapter();
sda.SelectCommand = cmdDataBase;
DataTable dbdataset = new DataTable();
sda.Fill(dbdataset);
var stringArr = dbdataset.Rows[0].ItemArray.Select(x => x.ToString()).ToArray();
idField.Text = stringArr[0];
oib.Text = stringArr[1];
name.Text = stringArr[2];
lastname.Text = stringArr[3];
place.Text = stringArr[4];
adress.Text = stringArr[5];
no.Text = stringArr[6];
mail.Text = stringArr[7];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

我想做更新,从网格获取数据,当我单击按钮更新时,给我更新的形式,并填充数据,以便我可以更新。

试试这个解决方案,这可能会有所帮助

更新的代码:

MySqlDataAdapter sda = new MySqlDataAdapter();
sda.SelectCommand = cmdDataBase;
DataTable dbdataset = new DataTable();
sda.Fill(dbdataset);
if(dbdataset.Rows.Count>0)
{
var stringArr = dbdataset.Rows[0].ItemArray.Select(x => x.ToString()).ToArray();
idField.Text = stringArr[0];
oib.Text = stringArr[1];
name.Text = stringArr[2];
lastname.Text = stringArr[3];
place.Text = stringArr[4];
adress.Text = stringArr[5];
no.Text = stringArr[6];
mail.Text = stringArr[7];
}
else
{
//Do somthing
}

以下 SQL 查询未返回任何行(没有 ID 为<whatever trenutniID is>的 abba.osoba (

SELECT * from abba.osoba where ID=" + trenutniID + ";

也许是一些防御性编码,以及一些整理:

string queryStr = "SELECT * from abba.osoba where ID=@id";
string constring = "datasource=localhost;port=3306;username=root;password=";
MySqlConnection conDataBase = new MySqlConnection(constring);
MySqlCommand cmdDataBase = new MySqlCommand(queryStr, conDataBase);
//important! do not concatenate values into SQL strings. Put a parameter then populate it with a value
cmdDAtaBase.Parameters.Add("@id", MySqlDbType.Int32 ).Value = trenutniID;
try
{
MySqlDataAdapter sda = new MySqlDataAdapter();
sda.SelectCommand = cmdDataBase;
DataTable dt = new DataTable();
sda.Fill(dt);
if(dt.Rows.Count ==0)
MessageBox.Show("Unknown ID " + trenutniID);
else{
idField.Text = dt.Rows[0]["id"].ToString(); //you could use a "string" name of column here instead of numbers like 0. it's marginally easier to read
oib.Text = dt.Rows[0][1].ToString(); //or "oib" etc? 
name.Text = dt.Rows[0][2].ToString();
lastname.Text = dt.Rows[0][3].ToString();
place.Text = dt.Rows[0][4].ToString();
adress.Text = dt.Rows[0][5].ToString();
no.Text = dt.Rows[0][6].ToString();
mail.Text = dt.Rows[0][7].ToString();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

如果您使用数据绑定,但您尚未发布足够的信息来对此提出建议,这也将变得更加容易

当您将数据输入数据网格而不是按 Enter 键时,会发生这种情况。为了在数据网格中添加一行,您必须在调用您编写的更新函数之前按回车键。

请在"尝试"之前将以下内容添加到您的函数中:

如果(数据库数据集。Rows.Count(( == 0( { 显示一些消息,通知用户首先输入数据,并确保点击 Enter 按钮 返回; }

最新更新