I Mitglied Wartungscode erstellt haben, abzurufen, in dem ich die Mitglieder ID, Name abruft und alle grundlegenden Dinge Mein Code ist wie folgt:Der Versuch, Parameterwert aus einer anderen Klassenbibliothek
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 eine Bibliothek namens Classlibrary, dessen Code erstellt haben wird wie folgt
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;
}
}
}
Aber während der Ausführung kommt ein Fehler auf
System.FormatException: Eingabezeichenfolge war nicht falsches Format bei LIBRARY.Generate_no.gen_no (String P_PRM_TYPE)
Keine Antwort, aber - Bitte verwenden Sie keine String-Verkettung, um SQL-Abfragen zu erstellen. Es ist anfällig für SQL-Injektionen. Verwenden Sie [Parameterized Queries] (https://msdn.microsoft.com/en-us/library/bb738521 (v = vs.100) .aspx) –
Ich habe es in anderen Programmen versucht.Es funktioniert ordnungsgemäß.Was ist das Problem mit Verkettung. ?? –
Ya wird es natürlich funktionieren, aber wie ich gerade gesagt habe ... SQL-Injektionen - look it up –