J'ai créé Maintenance du code membre dans lequel je récupérer l'ID membres, Nom et toutes les choses de base Mon code est le suivant:Essayer de récupérer la valeur du paramètre d'une autre bibliothèque de classes
private void Mem_Maintenance_Load(object sender, EventArgs e)
{
try
{
txt_mem_id.Text = Generate_no.gen_no("MEM").ToString();
}
catch(Exception Ex)
{
MessageBox.Show("Error\n\n"+Ex.ToString());
}
}
I ont créé une bibliothèque nommée ClassLibrary code dont se présente comme suit
namespace LIBRARY
{
public class Generate_no
{
public static int gen_no(string P_PRM_TYPE)
{ OleDbConnection connection = new OleDbConnection();
connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\arekh\MS Access\soc_data.accdb;Persist Security Info=False;";
connection.Open();
int v_last_no = 0;
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
string query = @"select PARM_VALUE from soc_parm_mast where PARM_TYPE = '" + P_PRM_TYPE + "';";
command.CommandText = query;
OleDbDataReader reader = command.ExecuteReader();
reader.Read();
v_last_no = Int32.Parse(reader["PARM_VALUE"].ToString()) + 1;
reader.Close();
command.CommandText = @"update soc_parm_mast set PARM_VALUE = PARM_VALUE+1 where PARM_TYPE = " + P_PRM_TYPE + ";";
command.ExecuteNonQuery();
connection.Close();
return v_last_no;
}
}
}
Mais lors de l'exécution d'une erreur est à venir
System.FormatException: La chaîne d'entrée n'était pas un format incorrect à LIBRARY.Generate_no.gen_no (String P_PRM_TYPE)
Pas une réponse mais - Veuillez ne pas utiliser la concaténation de chaîne pour créer des requêtes sql. Il est sensible aux injections de Sql. Utilisez [Requêtes paramétrées] (https://msdn.microsoft.com/en-us/library/bb738521 (v = vs.100) .aspx) –
Je l'ai essayé dans d'autres programmes.Il fonctionne correctement.quel est le problème en utilisant la concaténation. –
Ya il va bien sûr fonctionner mais comme je viens de le dire ... injections Sql - le chercher –