データを保存するデータベースとしてmysqlを使用しています。
テキストボックス、ラジオボタン、コンボボックスなどを備えたウィンドウフォームがあります。人々が自分自身に関する個人情報を提供する場所 (名、姓、性別、誕生日、電話番号、父親の名前など)。(全40分野)
検索ボタンをつけたい。このボタンを使用していくつかのフィールドに入力し、検索ボタンを押すと、同じ個人情報を持つすべての人を含む新しいウィンドウが開きます。1 つのフィールドに対して検索ボタンを実行することができました (たとえば、名前だけで検索するなど)。
しかし、複数のフィールドで検索することを選択すると問題が発生します。たとえば、名前:Chris、ニックネーム:Dung、性別:男性、出生国:UK などのすべての人を検索することを選択しますが、検索を押すと、検索データとは無関係のウィンドウが返されます。誰かがそれを手伝ってくれますか?
変更後の検索ボタン用に作成したコードは次のとおりです。
public MySqlDataAdapter da;
public DataSet ds;
public string sTable = "data";
private void anazitisi_button_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
try
{
conn = openconnectio.GetConn();
string radiob = null;
if (radioButton1.Checked == true)
{
radiob = radioButton1.Text;
}
else if(radioButton2.Checked == true)
{
radiob = radioButton2.Text;
}
StringBuilder Query = new StringBuilder("SELECT * FROM data d INNER JOIN country c ON d.id_data = c.id_country WHERE 1=1 ");
if (!String.IsNullOrEmpty(textBox1.Text))
Query.Append(" AND name like '" + textBox1.Text + "'");
if (!String.IsNullOrEmpty(textBox2.Text))
Query.Append(" AND lastname like '" + textBox2.Text + "'");
if (!String.IsNullOrEmpty(radiob))
Query.Append(" AND sex like '" + radiob + "'");
if (!String.IsNullOrEmpty(maskedTextBox1.Text))
Query.Append(" AND birthdate like '" + maskedTextBox1.Text + "'");
if (!String.IsNullOrEmpty(maskedTextBox2.Text))
Query.Append(" AND phone_number like '" + maskedTextBox2.Text + "'");
MySqlDataAdapter da = new MySqlDataAdapter(Query.ToString(), conn);
ds = new DataSet();
da.Fill(ds, sTable);
conn.Close();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
DataGridView dg1 = new DataGridView();
form2.Controls.Add(dg1);
dg1.Dock = DockStyle.Fill;
dg1.Refresh();
dg1.DataSource = ds;
dg1.DataMember = sTable;
form2.Show();
if (conn != null)
{
conn.Close();
}
}
}
そのコードをコメントすると、検索後の私の結果は問題ありません:(
生年月日コード)そしてもちろん検索として使用しません。
//if (!String.IsNullOrEmpty(maskedTextBox1.Text))
// Query.Append(" AND birthdate like '" + maskedTextBox1.Text + "'");
しかし、(生年月日コード)を使用すると、結果は空白行のみになります。生年月日の maskedTextbox にはマスクがあるため
だと思います
: 00/00/0000
何か提案はありますか?
ありがとう。