2012-03-21 3 views
9

¡Esta es una pregunta de un principiante experimentado!¿Cómo crear una conexión sql con el código C# detrás, acceder al servidor sql y luego redirigir condicionalmente?

mediante ASP.NET 4 C del servidor SQL # Y,

Tengo una cadena de conexión en web.config para MyDatabase "myCS" con nombre. Tengo una base de datos llamada myDB. Tengo una tabla llamada myTable con una clave principal llamado MYPK

¿Cuáles son las líneas necesarias de código subyacente (código mínimo) para crear una conexión de SQL, a continuación, seleccione una de myTable donde MYPK == "simpletext"

probablemente incluirá:

sqlconnection conn = new sqlconnection(??? myCS) 
string SQLcommand = select * from myDB.myTable where myPK==myTestString; 
sqlCommand command = new SqlCommand(SQL,conn); 

conn.Open(); 

booleanFlag = ???? 

conn.Close(); 
conn.Dispose(); 

continuación

If (theAnswer != NULL) // or (if flag) 
{ 
Response.Redirect("Page1.aspx"); 
} 
else 
{ 
Response.Redirect("Page2.aspx"); 
} 

Respuesta

20

Aquí es un simple tutorial limitada:

En primer lugar, desea tenga una clase para hacer el trabajo duro por usted, luego la usará con facilidad.

Primero, debe encajar la cadena de conexión en su archivo web.config y asígnele un nombre. Aquí se llama DatabaseConnectionString, pero puede llamarlo myCS según se requiera en la pregunta.

Ahora, en App_Code crear un nuevo archivo de clase y el nombre de SqlComm (esto es sólo un ejemplo de nombre) como:

using System; 
using System.Data; 
using System.Data.SqlClient; 
using System.Web; 

public class SqlComm 
{ 
    // this is a shortcut for your connection string 
    static string DatabaseConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["dbConStr"].ConnectionString; 

    // this is for just executing sql command with no value to return 
    public static void SqlExecute(string sql) 
    { 
     using (SqlConnection conn = new SqlConnection(DatabaseConnectionString)) 
     { 
      SqlCommand cmd = new SqlCommand(sql, conn); 
      cmd.Connection.Open(); 
      cmd.ExecuteNonQuery(); 
     } 
    } 

// with this you will be able to return a value 
    public static object SqlReturn(string sql) 
    { 
     using (SqlConnection conn = new SqlConnection(DatabaseConnectionString)) 
     { 
      conn.Open(); 
      SqlCommand cmd = new SqlCommand(sql, conn); 
      object result = (object)cmd.ExecuteScalar(); 
      return result; 
     } 
    } 

    // with this you can retrieve an entire table or part of it 
    public static DataTable SqlDataTable(string sql) 
    { 
     using (SqlConnection conn = new SqlConnection(DatabaseConnectionString)) 
     { 
      SqlCommand cmd = new SqlCommand(sql, conn); 
      cmd.Connection.Open(); 
      DataTable TempTable = new DataTable(); 
      TempTable.Load(cmd.ExecuteReader()); 
      return TempTable; 
     } 
    } 

// sooner or later you will probably use stored procedures. 
// you can use this in order to execute a stored procedure with 1 parameter 
// it will work for returning a value or just executing with no returns 
    public static object SqlStoredProcedure1Param(string StoredProcedure, string PrmName1, object Param1) 
    { 
     using (SqlConnection conn = new SqlConnection(DatabaseConnectionString)) 
     { 
      SqlCommand cmd = new SqlCommand(StoredProcedure, conn); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Parameters.Add(new SqlParameter(PrmName1, Param1.ToString())); 
      cmd.Connection.Open(); 
      object obj = new object(); 
      obj = cmd.ExecuteScalar(); 
      return obj; 
     } 
    } 
} 

bien, esto sólo una clase, y ahora usted debe saber cómo usarlo :

Si se desea ejecutar un comando como borrar, insertar, actualizar, etc. utilizar este:

SqlComm.SqlExecute("TRUNCATE TABLE Table1"); 

pero si usted necesita para recuperar un valor específico del uso de bases de datos º es decir:

int myRequiredScalar = 0; 
object obj = new object(); 
obj = SqlComm.SqlReturn("SELECT TOP 1 Col1 FROM Table1"); 
if (obj != null) myRequiredScalar = (int)obj; 

Puede recuperar un montón de filas de la base de datos de esta manera (otros como otras formas) Esto es relevante a su pregunta sepecific

int Col1Value = 0; 
DataTable dt = new DataTable(); 
dt = SqlComm.SqlDataTable("SELECT * FROM myTable WHERE myPK='simpleText'"); 
if (dt.Rows.Count == 0) 
{ 
    // do something if the query return no rows 
    // you may insert the relevant redirection you asked for 
} 
else 
{ 
    // Get the value of Col1 in the 3rd row (0 is the first row) 
    Col1Value = (int)dt.Rows[2]["Col1"]; 

    // or just make the other redirection from your question 
} 

Si necesita ejecutar un procedimiento almacenado con o sin devolver un valor de nuevo esta es la manera de hacerlo (en este ejemplo hay ningún valor de regresar)

SqlComm.SqlStoredProcedure1Param("TheStoredProcedureName", "TheParameterName", TheParameterValue); 

una vez más, para su ret pregunta específica urn la tabla usando el SqlDataTable, y redirigir si dt.Rows.Count >0

Diviértete.

+0

¿Qué es PjSql.dbcs()? Esto debería ser cambiado. –

+0

+1 - Admiro específicamente cómo se creó una clase independiente para la ejecución de comandos sql para la organización y la coherencia – Abob

2

Hay muchas maneras: LINQ, SqlDataReader, SQLDataAdapter, de acuerdo con lo que desea leer (valor único, tabla de datos ...), por lo que aquí es un ejemplo:

using (SqlConnection con = new SqlConnection("SomeConnectionString")) 
{ 
    var cmd = new SqlCommand("select from myTable where myPK==N'"+ simpleText+ "'",con); 
    cmd.Connection.Open(); 
    var sqlReader = cmd.ExecuteReader(); 
    while(sqlReader.Read()) 
    { 
    //Fill some data like : string result = sqlReader("SomeFieldName"); 
    } 
    sqlReader.Close(); 
    cmd.Connection.Close(); 
    cmd.Dispose(); 
} 
Cuestiones relacionadas