private void d_Load(object sender, EventArgs e)
{
string connstring = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\it155.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection conn = new SqlConnection(connstring);
try
{
conn.Open();
string snumber = txtSnumber.Text;
SqlCommand get = new SqlCommand(@"Select from IStudent where SNumber ='" + txtSnumber.Text + "'", conn);
}
catch (Exception)
{
}
}
考虑到上面编写的代码的开始,我打算做的是能够使用sql数据库中的id号数据类型varchar(11)登录,该数据库将被输入txtSnumber但是除了我之外无法弄清楚如何检查输入的身份证号码是否正确,如果正确,则与该身份证号码相对应的信息应该显示在相应的文本框中。请帮帮我,谢谢
答案 0 :(得分:5)
您的sql语句很容易出现SQL注入。像这样连接SQL是一种可怕的做法。而是做这样的事情:
string snumber = txtSnumber.Text;
SqlCommand get = new SqlCommand(@"Select from IStudent where SNumber =@User", conn);
get.Parameters.AddWithValue("@User",snumber);
现在,为了检查是否找到了记录,请执行以下操作:
using(IDataReader reader = get.ExecuteReader())
{
if (reader.HasRows)
{
//information correct. Do something
}
}
答案 1 :(得分:1)
您可以使用DataReader()
进行检查 SqlCommand get = new SqlCommand(@"Select from IStudent where SNumber ='" + txtSnumber.Text + "'", conn);
SqlDataReader myReader = get.ExecuteReader();
if (myReader.HasRows)
{
MessageBox.Show("ID is valid");
while (myReader.Read())
//Do something here
}
else
MessageBox.Show("Given ID is Invalid.");
编辑:
在调用ExecuteReader()方法时,在其中放入以下参数,以便在关闭连接时,datareader也会自动关闭。
SqlDataReader myReader = get.ExecuteReader(CommandBehavior.CloseConnection);