1、 oracle 存储过程以及 asp.NET 中调用存储过程,实现一个简单的登录功能,只是作为学习的,所以处理可能不太合理。 ① 在 PL/SQLDeveloper 中编写存储过程 新建 Procedures ,一个简单的登录检查存储过程代码如下: createorreplaceprocedureuser_login(s
1、oracle存储过程以及asp.NET中调用存储过程,实现一个简单的登录功能,只是作为学习的,所以处理可能不太合理。
① 在PL/SQL Developer中编写存储过程
新建Procedures,一个简单的登录检查存储过程代码如下:
create or replace procedure user_login(sname in nvarchar2 ,spassword in nvarchar2, ReturnValue out number)
is --变量声明
Rname nvarchar2(20);
Rpassword nvarchar2(50);
begin
ReturnValue :=0; --赋初值
select username into Rname from userinfo where username=sname;
if Rname is not null then
ReturnValue:=1;--用户名存在
select userpassword into Rpassword from userinfo where username=sname and userpassword=spassword;
if Rpassword is not null then
ReturnValue:=2;--登陆成功
else ReturnValue:=1;--用户名存在,密码不正确
return ;
end if;
else ReturnValue:=0;--用户不存在
end if;
exception
when no_data_found then
DBMS_OUTPUT.put_line('没有找到数据');
end;
② 在PL/SQL Developer的SQL窗口中调用存储过程
declare --变量声明
ReturnValue number(10);
begin
user_login('faith','faith',ReturnValue);
if ReturnValue=0 then
DBMS_OUTPUT.put_line('不存在此用户');
elsif ReturnValue=1 then
DBMS_OUTPUT.put_line('存在用户,但密码不正确');
else
DBMS_OUTPUT.put_line('登录成功!!!');
end if;
end;
③ 在VS2012中调用存储过程
在OracleHelper.cs文件中:
public static void iRunProc(string procName, OracleParameter[] paras)
{
OracleConnection conn=new OracleConnection(OracleHelper.strConn);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
OracleCommand cmd = new OracleCommand(procName, conn);
cmd.CommandType = CommandType.StoredProcedure;
if (paras != null)
{
for (int i = 0; i
{
OracleParameter parameter = paras[i];
cmd.Parameters.Add(parameter);
}
}
int result = cmd.ExecuteNonQuery();
cmd.ExecuteNonQuery();
}
DAL层的webtestDal.cs文件中
public static int loginByProc(string name,string password,string procName)
{
OracleParameter[] parameters ={
new OracleParameter("sname", OracleType.NVarChar, 20),
new OracleParameter("spassword", OracleType.NVarChar, 50),
new OracleParameter("ReturnValue", OracleType.Number, 10)
};
parameters[0].Value = name;
parameters[1].Value = password;
//parameters[2].Value = 0;
parameters[0].Direction = ParameterDirection.Input;
parameters[1].Direction = ParameterDirection.Input;
parameters[2].Direction = ParameterDirection.Output;
try
{
OracleHelper.iRunProc(procName, parameters);
int i = int.Parse(parameters[2].Value.ToString());
return i;
}
catch (Exception e)
{
throw e;
}
}
在BLL层的webtestBll.cs文件中
public static int loginByProc(string name, string password, string procName)
{
return webtestDal.loginByProc(name, password, procName);
}
在页面代码的登录按钮事件中
protected void btnSubmit_Click(object sender, EventArgs e)
{
string name = this.txtName.Text.Trim();
string password = this.txtPassword.Text.Trim();
//调用存储过程,判断是否登录成功
if (webtestBll.loginByProc(name, password, "user_login")==2)//存储过程输出2表示登录成功
{//登录成功,保存用户名和密码的cookie
HttpCookie mycookie = new HttpCookie("loginCookie");
mycookie.Values.Add("cname", name);
mycookie.Values.Add("cpassword", password);
mycookie.Expires = DateTime.Now.AddHours(4);//cookie的生命期
Response.AppendCookie(mycookie);
Response.Redirect("userinfo.aspx");
}
else if (webtestBll.loginByProc(name, password, "user_login") == 1)
{
// Response.Write("");
RegisterClientScriptBlock("msg", "<script>alert(\"密码错误!\");</script>");
}
else
RegisterClientScriptBlock("msg", "<script>alert(\"无法认证!\");</script>");
}
2、登录之后,传递cookie值
先获取登录界面的cookie值(代码如上)
将登录页面的cookie值传给跳转页面
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = webtestBll.getAll();
userInfoGrid.DataSource = dt;
if (dt != null)
userInfoGrid.DataBind();
HttpCookie mycookie = null;
if (Request.Cookies.Get("loginCookie") != null)
{//当用户登录了时,获取页面传来的cookie值
mycookie = Request.Cookies.Get("loginCookie");
this.txtLoginName.Text = mycookie.Values["cname"].ToString();
this.txtLoginPassword.Text = mycookie.Values["cpassword"].ToString();
}
else
{//cookie过期或者没登录
Response.Redirect("userLogin.aspx?errorMsg=您还没登陆,请先登陆!");
}
}
}

La cardinalité de l'index MySQL a un impact significatif sur les performances de la requête: 1. L'indice de cardinalité élevé peut réduire plus efficacement la plage de données et améliorer l'efficacité de la requête; 2. L'indice de cardinalité faible peut entraîner une analyse complète de la table et réduire les performances de la requête; 3. Dans l'indice conjoint, des séquences de cardinalité élevées doivent être placées devant pour optimiser la requête.

Le chemin d'apprentissage MySQL comprend des connaissances de base, des concepts de base, des exemples d'utilisation et des techniques d'optimisation. 1) Comprendre les concepts de base tels que les tables, les lignes, les colonnes et les requêtes SQL. 2) Apprenez la définition, les principes de travail et les avantages de MySQL. 3) Master les opérations de base CRUD et l'utilisation avancée, telles que les index et les procédures stockées. 4) Familier avec les suggestions de débogage d'erreurs et d'optimisation des performances communes, telles que l'utilisation rationnelle des indices et les requêtes d'optimisation. Grâce à ces étapes, vous aurez une compréhension complète de l'utilisation et de l'optimisation de MySQL.

Les applications réelles de MySQL incluent la conception de base de données de base et l'optimisation des requêtes complexes. 1) Utilisation de base: utilisé pour stocker et gérer les données des utilisateurs, telles que l'insertion, l'interrogation, la mise à jour et la suppression des informations utilisateur. 2) Utilisation avancée: gérer la logique commerciale complexe, telle que la gestion de l'ordre et des stocks des plateformes de commerce électronique. 3) Optimisation des performances: améliorer les performances en utilisant rationnellement les index, les tables de partition et les caches de requête.

Les commandes SQL dans MySQL peuvent être divisées en catégories telles que DDL, DML, DQL et DCL, et sont utilisées pour créer, modifier, supprimer des bases de données et tables, insérer, mettre à jour, supprimer des données et effectuer des opérations de requête complexes. 1. L'utilisation de base inclut la table de création de création, les données d'insertion d'inserto et de sélectionner les données de requête. 2. L'utilisation avancée implique la jointure pour les jointures de table, les sous-questionnaires et le groupe pour l'agrégation de données. 3. Des erreurs courantes telles que les erreurs de syntaxe, les problèmes de décalage du type de données et d'autorisation peuvent être débogués par la vérification de la syntaxe, la conversion du type de données et la gestion de l'autorisation. 4. Les suggestions d'optimisation des performances incluent l'utilisation d'index, d'éviter la numérisation complète de la table, d'optimiser les opérations de jointure et d'utiliser les transactions pour assurer la cohérence des données.

InnODB atteint l'atomicité par undolog, la cohérence et l'isolement par le mécanisme de verrouillage et le MVCC, et la persistance par redolog. 1) Atomicité: Utilisez undolog pour enregistrer les données d'origine pour vous assurer que la transaction peut être annulée. 2) Cohérence: assurez la cohérence des données via le verrouillage au niveau des lignes et le MVCC. 3) Isolement: prend en charge plusieurs niveaux d'isolement et RepeatableRead est utilisé par défaut. 4) Persistance: utilisez Redolog pour enregistrer des modifications pour garantir que les données sont enregistrées pendant longtemps.

La position de MySQL dans les bases de données et la programmation est très importante. Il s'agit d'un système de gestion de base de données relationnel open source qui est largement utilisé dans divers scénarios d'application. 1) MySQL fournit des fonctions efficaces de stockage de données, d'organisation et de récupération, en prenant en charge les systèmes Web, mobiles et de niveau d'entreprise. 2) Il utilise une architecture client-serveur, prend en charge plusieurs moteurs de stockage et optimisation d'index. 3) Les usages de base incluent la création de tables et l'insertion de données, et les usages avancés impliquent des jointures multiples et des requêtes complexes. 4) Des questions fréquemment posées telles que les erreurs de syntaxe SQL et les problèmes de performances peuvent être déboguées via la commande Explication et le journal de requête lente. 5) Les méthodes d'optimisation des performances comprennent l'utilisation rationnelle des indices, la requête optimisée et l'utilisation des caches. Les meilleures pratiques incluent l'utilisation des transactions et des acteurs préparés

MySQL convient aux petites et grandes entreprises. 1) Les petites entreprises peuvent utiliser MySQL pour la gestion des données de base, telles que le stockage des informations clients. 2) Les grandes entreprises peuvent utiliser MySQL pour traiter des données massives et une logique métier complexe pour optimiser les performances de requête et le traitement des transactions.

INNODB empêche efficacement la lecture des fantômes via le mécanisme de blocage à clé suivante. 1) Le blocage de touche suivante combine le verrouillage des lignes et le verrouillage de l'espace pour verrouiller les enregistrements et leurs lacunes pour empêcher l'insertion de nouveaux enregistrements. 2) Dans les applications pratiques, en optimisant la requête et en ajustant les niveaux d'isolement, la concurrence des verrouillage peut être réduite et les performances de la concurrence peuvent être améliorées.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft