Los tres comprenderán el sentido común

Prefacio:

Hace poco me golpeó tres del código, debido a que el código dentro de algunas series pequeñas ignorante, y por lo tanto no lo sabía. Xiao Bian hoy resumió lo que éstos código simple, proporcionó una buena oportunidad para revisar el viejo conocimiento para todos. Si defectuoso, por favor tratado.

cuerpo:

using System.Data.SqlClient;//引用命名空间

Using System.Data.SqlClient  pretende hacer referencia al nombre del espacio de nombres System.Data.SqlClient.

utilizando un acceso definido en el lenguaje C #, dará a conocer el uno o más objetos fuera de este rango.

Espacio de nombres se utiliza para organizar y reutilización de código. Espacio de nombres es el nombre que identifica de forma única, en un espacio de nombres diferente, nombre de la clase pueden ser el mismo.

System.Data.SqlClient  contiene muchas clases de este espacio de nombres, en tres capas, utilizaremos la clase son los siguientes:

SqlConnection ----------- representa una conexión con la base de datos de SQL Sever

del SqlCommand ------------ representa una instrucción de Transact-SQL o un procedimiento almacenado para ejecutar contra la base de datos SQL Sever.

SqlDataReader -------- flujo en forma proporciona un modo de sólo lectura (que es la forma más rápida para la lectura de datos de la base de datos SQL de sólo lectura Sever Método ).

la SqlParameter ---------- representa un parámetro, o un mapa con la columna SqlCommand DataSet.

namespace Login.DAL
{
    public class ScoreDAO
    {
        public void UpdateScore(string userName, int value)
        {
            using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = @"INSERT INTO SCORES (UserName, Score) Values(@UserName,@Score)";
                cmd.Parameters.Add(new SqlParameter("@UserName", userName));
                cmd.Parameters.Add(new SqlParameter("@Score", value));

                conn.Open();
                cmd.ExecuteNonQuery();

            }
        }
    }
}

métodos de inyección anti SQL

Con parámetros de SQL se refiere al tiempo en el diseño de datos y base de datos y enlaces de acceso, en su lugar necesidad de valores o datos de relleno, parámetros de uso (parámetros) para dar valor a representar los parámetros con @.

En el caso de una consulta parametrizada, el servidor de base de datos no será contenido como un parámetro de procesamiento de comandos SQL, pero sólo como un valor para el procesamiento, por lo que puede evitar la inyección de SQL.

public void UpdateScore(string userName, int value)
            //写一个增加积分的方法,从B层获取数据
        {
            using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = @"INSERT INTO SCORES (UserName, Score) Values(@UserName,@Score)";
                cmd.Parameters.Add(new SqlParameter("@UserName", userName));
                cmd.Parameters.Add(new SqlParameter("@Score", value));

                conn.Open();
                cmd.ExecuteNonQuery();

            }
        }

El papel de "@" en

① ignorar el carácter de escape

p.ej:

//使用@前
string fileName = "D:\\文本文件\\text.txt";

//使用@后
string fileName = @"D:\文本文件\text.txt";

② dejar que la cadena interbancaria

p.ej:

//使用@前
cmd.CommandText = "SELECT ID,UserName,Password,Email"
                  + "FROM USERS WHERE UserName=@UserName" 
                  + "AND Password=@Password"; 


//使用@后
cmd.CommandText = @"SELECT ID,UserName,Password,Email
                   FROM USERS WHERE UserName=@UserName
                   AND Password=@Password"; 

③ en los identificadores

Las variables pueden ser definidas por una @ antes de la palabra clave, esta palabra clave se puede usar como identificadores (como nombres de variables, nombres de métodos, etc.).

 

Arrojar nueva manejo de excepciones excepción

Se trata de las tres capas vienen sin una emboscada a cielo sonido, después de tres Qiaowan, introduzca la contraseña de la cuenta correcta ------ aterrizaje exitoso, ya no hay aterrizó contraseña incorrecta para la cuenta de prueba, a fin de hacer error que se muestra en la figura.

Este error se produce porque la palabra clave tiro, esto se utiliza principalmente para lanzar una excepción, que es necesario para utilizar en la capa de interfaz de usuario ....... intento de captura para recibir la excepción, de lo contrario será error.

Por lo tanto, el código escrito de la siguiente manera:

        private void BTLogin_Click(object sender, EventArgs e)
        {
            
            try
            //对try块代码进行异常捕捉,
            //如无异常则进行直try块结束,
            //如有异常则跳转进入catch块。
            {
                string userName = txtUserName.Text.Trim();
                string password = txtPassword.Text;
                Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();
                //将用户输入的数据传给BLL,在下面一句的使用中,就直接从BLL调用数据
                Login.Model.UserInfo user = mgr.UserLogin(userName, password);
                //在这里就可以返回model里的userinfo
                MessageBox.Show("登陆用户:" + user.UserName);
            }

            catch (Exception ex)
            //处理异常。如下进行处理
            {
                MessageBox.Show(ex.Message);
            }
        }

 

Publicado 64 artículos originales · elogios ganado 15 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/YaraRen/article/details/103252031
Recomendado
Clasificación