抱歉,如果要发送一则长信息,请多多关照。非常感谢您提供给我的帮助
* enter image description here我已经大胆了代码中的问题
我一直在尝试使事件工作最长时间,在该事件中,当您按Enter/Return键时,数据库会进行输入,但是某些或其他内容出了问题
我发布了整个代码,因为虽然时间不长,但我无法指出问题所在
所以每当我将eneter键事件添加到key up事件时,它都会检查是否按下了key输入,否则会引发异常
[MySql.Data.MySqlClient.MySqlException:'第1行的'_Age'列的整数值不正确”
如果我删除回车键检查器代码,它可以很好地工作,但问题是在我键入每个数字时数据加载完毕
例如,如果我想输入56,它将加载5的数据,然后当我输入6时,它将接受输入,我想在按Enter时加载它,但主要瓶颈是我还没有另一个错误弄清楚了getstring函数不能接受空值的地方,一旦完成,我就无法弄清楚该怎么做,我可以继续前进,例如,如果我输入5且其中一个字段具有空值,它就会中断并发生错误工作
第1部分:代码的普通部分
using Microsoft.Win32;
using MySql.Data.MySqlClient;
using System.CodeDom;
using System.Data;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace CH03
{
/// <summary>
/// Interaction logic for Dashboard.xaml
/// </summary>
///
public partial class Dashboard : UserControl
{
string connetionstring = @"Server=localhost;Database=ch;Uid=root;Pwd=1234;";
int ID = 0;
public Dashboard()
{
InitializeComponent();
DataContext = this;
string imgavatar = $"
第2部分:这部分会导致问题 private void btnupdate_Click(object sender, RoutedEventArgs e)
{
using (MySqlConnection con = new MySqlConnection(connetionstring))
{
con.Open();
MySqlCommand cmd = new MySqlCommand("Dashboard", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("_ID", ID);
cmd.Parameters.AddWithValue("_Mem_no", memno.Text.Trim());
cmd.Parameters.AddWithValue("_Mem_Name", memnm.Text.Trim());
cmd.Parameters.AddWithValue("_Father_Name", fsn.Text.Trim());
cmd.Parameters.AddWithValue("_Age", age.Text.Trim());
cmd.Parameters.AddWithValue("_Gender", gndr.Text.Trim());
cmd.Parameters.AddWithValue("_Date_of_Birth", dob.Text.Trim());
cmd.Parameters.AddWithValue("_Union_name", unm.Text.Trim());
cmd.Parameters.AddWithValue("_Photo_path", @"E:\new databse
project\chitrapuri\images\" + memno.Text + ".jpg");
cmd.ExecuteNonQuery(); **<----- THIS IS WHAT THROWS THE EXCEPTION**
MessageBox.Show("success");
clear();
btnupdate.Content = "Update";
Add_New_Member.Visibility = Visibility.Visible;
con.Close();
}
}
第3部分:这是面对问题的部分 private void memno_KeyUp(object sender, KeyEventArgs e)
{
using (MySqlConnection con = new MySqlConnection(connetionstring))
{
con.Open();
if (memno.Text != "")
{
if (e.Key == Key.Return) **<---- IF I ADD THIS ONLY THEN DOES IT THROW THE EXCEPTION**
{
MySqlCommand cmd = new MySqlCommand("SELECT * FROM ch.mi WHERE Mem_no =" +
int.Parse(memno.Text.Trim()), con);
MySqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
memnm.Text = dr.GetString("Mem_Name");
fsn.Text = dr.GetString("Father_Name");
age.Text = dr.GetInt32("Age").ToString();
gndr.Text = dr.GetString("Gender");
dob.Text = dr.GetString("Date_of_Birth");
unm.Text = dr.GetString("Union_name");
}
else
{
clear();
MessageBox.Show("Data Not Available");
}
con.Close();
}
}
}
}
MySql代码虽然不重要PROCEDURE `Dashboard`(_ID int,
_Mem_no int,
_Mem_Name varchar(255),
_Father_Name varchar(255),
_Age int,
_Gender varchar(255),
_Date_of_Birth varchar(255),
_Union_name varchar(255)
)
BEGIN
IF _ID = 0 THEN
INSERT INTO mi (ID,
Mem_no,
Mem_Name,
Father_Name,
Age,
Gender,
Date_of_Birth,
Union_name
)
VALUES (_ID,
_Mem_no,
_Mem_Name,
_Father_Name,
_Age,
_Gender,
_Date_of_Birth,
_Union_name
);
ELSE
UPDATE mi
SET
Mem_no = _Mem_no,
Mem_Name = _Mem_Name,
Father_Name =_Father_Name,
Age = _Age,
Gender = _Gender,
Date_of_Birth = _Date_of_Birth,
Union_name = _Union_name
WHERE ID = _ID;
END IF;
END
最佳答案
您可以使用字符代码在KeyPress事件上扫描回车键。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
{
// Do something here
}
}
此时,文本框值将不包含返回字符。