使用 C# 中的 SQL 控制正确输入

本文关键字:输入 控制 SQL 中的 使用 | 更新日期: 2023-09-27 18:30:44

        txtBox2.Enabled = false;
        //made by francisco juliao
        Convert.ToInt32(txtBox1.Text);
        int Ticket = Convert.ToInt32(txtBox1.Text);
        SqlConnection mySC = new SqlConnection();
        SqlCommand com = new SqlCommand();
        mySC.ConnectionString = ("Data Source=localhost;Initial Catalog=RCA;Integrated Security=True");
        mySC.Open();
        com.Connection = mySC;
        com.CommandText = (@"SELECT Ticketid * FROM RCA)
            VALUES ('" + txtBox1.Text + "','" + output+ "');");
        mySC.Close();
       if (Ticket = //SQL ticketID check here.
            txtBox2.Enabled = true;
            MessageBox.Show("Valid ID! Input email now.");
            label1.Text = "Enter your email now.";
        }
        else
        {
            MessageBox.Show("Incorrect!");
        }

因此,我希望我的 C# 应用程序检查用户键入的ticketID(txtBox1.Text)是否在 SQL 服务器中。我不知道我会怎么做。如果输入正确,则标签会更改,textbox2将启用。如果在 sql 数据库中找不到该电子邮件,则会显示一个消息框,其中包含文本"不正确!任何帮助将不胜感激!

使用 C# 中的 SQL 控制正确输入

您应该更改文本框1的"失去焦点"事件上的代码,即您的TicketID文本框。

那看起来像这样

private void txtBox1_LostFocus(object sender, RoutedEventArgs e)
{
    SqlConnection mySC = new SqlConnection();
    SqlDataReader reader;
    mySC.ConnectionString = ("Data Source=localhost;Initial Catalog=RCA;Integrated Security=True");
    mySC.Open();
    string sql = @"SELECT * FROM RCA Where Ticketid = @tktid;";
    using(var command = new SqlCommand(sql, mySC))
    {
        command.Parameters.Add("@tktid", txtBox1.Text);
        reader = command.ExecuteReader();
    }
    if(reader.HasRows)
    {
        //Here you change the Label with LabelName I have used string to show.
        string Lbllabel = "Change";
        txtEmail.IsEnabled = true;
    }
    mySC.Close();
}

现在要检查电子邮件,您应该在TxtEmail_LostFocus上使用相同的内容

private void txtEmail_LostFocus(object sender, RoutedEventArgs e)
{
    SqlConnection mySC = new SqlConnection();
    SqlDataReader reader;
    mySC.ConnectionString = ("Data Source=localhost;Initial Catalog=RCA;Integrated Security=True");
    mySC.Open();
    string sql = @"SELECT * FROM RCA Where EmailID = @emailid;";
    using(var command = new SqlCommand(sql, mySC))
    {
        command.Parameters.Add("@emailid", txtEmail.Text);
        reader = command.ExecuteReader();
    }
    if(reader.HasRows)
    {
        //Email Exsist in the dataBase.
    }
    else
    {
        MessageBox("Incorrect!!");
    }
    mySC.Close();
}

首先,您将文本转换为 int

Convert.ToInt32(txtBox1.Text);

但是你对结果什么都不做!?例如,像这样:

int a = Convert.ToInt32(txtBox1.Text);

使用 Convert.toInt32() 不会更改文本框中的任何内容。它只是获取文本的字符串并将其转换为 int。

如果要通过检查条目是否为数字来验证条目,可以执行以下操作:

try{
int a = Convert.ToInt32(txtBox1.Text);
}
catch{
// error, txtBox1.Text could not be converted to int (it contains letters)
}

要查询 ticketID 是否在表中,请执行如下 sql 语句:

cmd.Commandtext = "SELECT Count(*) FROM RCA WHERE ticketID = '" + txtBox.text + "'";

之后,您可以像查询一样执行它,并在读取器中保护结果

SqlDataReader reader = cmd.ExecuteReader();

比你从读者那里阅读结果,看看是否有匹配

。或者你可以像Mohit Shrivastava说的那样去做。非常漂亮和闪亮!:D