C#:将多个字符串从窗体散列到类,再返回到窗体到SQL
我在想办法解决这个问题 我想用主窗体中的salt进行散列并将其发布到SQL Server,我的问题是目前我似乎不知道如何调用SQL语句的散列代码 问题是我似乎不知道如何将散列字符串调用到变量中。我遇到的一个错误是: 非静态字段、方法或对象的参考对象 属性'Functions.UniqueID' 如果我尝试了C#:将多个字符串从窗体散列到类,再返回到窗体到SQL,c#,sql,sql-server,class,sha,C#,Sql,Sql Server,Class,Sha,我在想办法解决这个问题 我想用主窗体中的salt进行散列并将其发布到SQL Server,我的问题是目前我似乎不知道如何调用SQL语句的散列代码 问题是我似乎不知道如何将散列字符串调用到变量中。我遇到的一个错误是: 非静态字段、方法或对象的参考对象 属性'Functions.UniqueID' 如果我尝试了函数myFunction=newfunctions() 我得到: 没有给出与所需的形式化参数相对应的参数 参数 我试着查了一下,但真的是一片空白,因为我对编码还不熟悉,也不太理解所有人抛出的术
函数myFunction=newfunctions()代码>
我得到:
没有给出与所需的形式化参数相对应的参数
参数
我试着查了一下,但真的是一片空白,因为我对编码还不熟悉,也不太理解所有人抛出的术语
我希望在类中使用它的原因是,我将在应用程序的多个实例中使用此哈希/salt
让我展示一下代码,也许有人能帮上忙:
主要形式:
接受者和接受者:
public string IdentifyOrder
{
get { return txtOrder.Text; }
set { txtOrder.Text = value; }
}
public string IdentifyStandard
{
get { return cmbStandard.Text; }
set { cmbStandard.Text = value; }
}
public string IdentifyNote
{
get { return cmbNote.Text; }
set { cmbNote.Text = value; }
}
private void btnSubmitInfo_Click(object sender, EventArgs e)
{
try
{
using (SqlConnection con = new SqlConnection(Connection.MTRDataBaseConn))
{
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "INSERT INTO dbo.[myDatabase] ([Purchase Order], [Standard], [Notes], [Unique Identifier]) VALUES(@PurchaseOrder,@Standard,@Notes,@UniqueIdentifier)";
cmd.Connection = con;
SqlParameter pPurchaseOrder = new SqlParameter("@PurchaseOrder", SqlDbType.VarChar, 50);
SqlParameter pStandard = new SqlParameter("@Standard", SqlDbType.VarChar, 50);
SqlParameter pNotes = new SqlParameter("@Notes", SqlDbType.VarChar, 50);
SqlParameter pUID = new SqlParameter("@UniqueIdentifier", SqlDbType.VarChar, 50);
pPurchaseOrder.Value = txtPurchaseOrder.Text;
pStandard.Value = cmbStandard.Text;
pNotes.Value = txtNotes.Text;
pUID.Value = Functions.UniqueID;
cmd.Parameters.Add(pPurchaseOrder);
cmd.Parameters.Add(pStandard);
cmd.Parameters.Add(pNotes);
cmd.Parameters.Add(pUID);
//execute
cmd.ExecuteNonQuery();
}
}
catch (SqlException ex)
{
//catch error
MessageBox.Show(ex.Message);
}
}
public class Functions
{
public readonly MainForm Identifiers;
public Functions(MainForm Identifiers)
{
this.Identifiers = Identifiers;
}
public void GenerateUniqueIdentifier()
{
string orderID = Identifiers.IdentifyOrder;
string standardID = Identifiers.IdentifyStandard;
string noteID = Identifiers.IdentiftNote;
string salt = "" + orderID + "" + standardID + "" + noteID + "";
}
public String GenHash(String input, String salt)
{
byte[] bytes = Encoding.UTF8.GetBytes(input + salt);
System.Security.Cryptography.SHA256Managed sha256hashstring =
new System.Security.Cryptography.SHA256Managed();
byte[] hash = sha256hashstring.ComputeHash(bytes);
return Convert.ToBase64String(hash);
}
public string UniqueID { get; set; }
}
SQL语句:
public string IdentifyOrder
{
get { return txtOrder.Text; }
set { txtOrder.Text = value; }
}
public string IdentifyStandard
{
get { return cmbStandard.Text; }
set { cmbStandard.Text = value; }
}
public string IdentifyNote
{
get { return cmbNote.Text; }
set { cmbNote.Text = value; }
}
private void btnSubmitInfo_Click(object sender, EventArgs e)
{
try
{
using (SqlConnection con = new SqlConnection(Connection.MTRDataBaseConn))
{
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "INSERT INTO dbo.[myDatabase] ([Purchase Order], [Standard], [Notes], [Unique Identifier]) VALUES(@PurchaseOrder,@Standard,@Notes,@UniqueIdentifier)";
cmd.Connection = con;
SqlParameter pPurchaseOrder = new SqlParameter("@PurchaseOrder", SqlDbType.VarChar, 50);
SqlParameter pStandard = new SqlParameter("@Standard", SqlDbType.VarChar, 50);
SqlParameter pNotes = new SqlParameter("@Notes", SqlDbType.VarChar, 50);
SqlParameter pUID = new SqlParameter("@UniqueIdentifier", SqlDbType.VarChar, 50);
pPurchaseOrder.Value = txtPurchaseOrder.Text;
pStandard.Value = cmbStandard.Text;
pNotes.Value = txtNotes.Text;
pUID.Value = Functions.UniqueID;
cmd.Parameters.Add(pPurchaseOrder);
cmd.Parameters.Add(pStandard);
cmd.Parameters.Add(pNotes);
cmd.Parameters.Add(pUID);
//execute
cmd.ExecuteNonQuery();
}
}
catch (SqlException ex)
{
//catch error
MessageBox.Show(ex.Message);
}
}
public class Functions
{
public readonly MainForm Identifiers;
public Functions(MainForm Identifiers)
{
this.Identifiers = Identifiers;
}
public void GenerateUniqueIdentifier()
{
string orderID = Identifiers.IdentifyOrder;
string standardID = Identifiers.IdentifyStandard;
string noteID = Identifiers.IdentiftNote;
string salt = "" + orderID + "" + standardID + "" + noteID + "";
}
public String GenHash(String input, String salt)
{
byte[] bytes = Encoding.UTF8.GetBytes(input + salt);
System.Security.Cryptography.SHA256Managed sha256hashstring =
new System.Security.Cryptography.SHA256Managed();
byte[] hash = sha256hashstring.ComputeHash(bytes);
return Convert.ToBase64String(hash);
}
public string UniqueID { get; set; }
}
我的课堂“功能”:
public string IdentifyOrder
{
get { return txtOrder.Text; }
set { txtOrder.Text = value; }
}
public string IdentifyStandard
{
get { return cmbStandard.Text; }
set { cmbStandard.Text = value; }
}
public string IdentifyNote
{
get { return cmbNote.Text; }
set { cmbNote.Text = value; }
}
private void btnSubmitInfo_Click(object sender, EventArgs e)
{
try
{
using (SqlConnection con = new SqlConnection(Connection.MTRDataBaseConn))
{
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "INSERT INTO dbo.[myDatabase] ([Purchase Order], [Standard], [Notes], [Unique Identifier]) VALUES(@PurchaseOrder,@Standard,@Notes,@UniqueIdentifier)";
cmd.Connection = con;
SqlParameter pPurchaseOrder = new SqlParameter("@PurchaseOrder", SqlDbType.VarChar, 50);
SqlParameter pStandard = new SqlParameter("@Standard", SqlDbType.VarChar, 50);
SqlParameter pNotes = new SqlParameter("@Notes", SqlDbType.VarChar, 50);
SqlParameter pUID = new SqlParameter("@UniqueIdentifier", SqlDbType.VarChar, 50);
pPurchaseOrder.Value = txtPurchaseOrder.Text;
pStandard.Value = cmbStandard.Text;
pNotes.Value = txtNotes.Text;
pUID.Value = Functions.UniqueID;
cmd.Parameters.Add(pPurchaseOrder);
cmd.Parameters.Add(pStandard);
cmd.Parameters.Add(pNotes);
cmd.Parameters.Add(pUID);
//execute
cmd.ExecuteNonQuery();
}
}
catch (SqlException ex)
{
//catch error
MessageBox.Show(ex.Message);
}
}
public class Functions
{
public readonly MainForm Identifiers;
public Functions(MainForm Identifiers)
{
this.Identifiers = Identifiers;
}
public void GenerateUniqueIdentifier()
{
string orderID = Identifiers.IdentifyOrder;
string standardID = Identifiers.IdentifyStandard;
string noteID = Identifiers.IdentiftNote;
string salt = "" + orderID + "" + standardID + "" + noteID + "";
}
public String GenHash(String input, String salt)
{
byte[] bytes = Encoding.UTF8.GetBytes(input + salt);
System.Security.Cryptography.SHA256Managed sha256hashstring =
new System.Security.Cryptography.SHA256Managed();
byte[] hash = sha256hashstring.ComputeHash(bytes);
return Convert.ToBase64String(hash);
}
public string UniqueID { get; set; }
}
您需要创建函数
类的对象,然后对其调用方法或访问其属性
像下面这样
//Previous code...
var functionsObj = new Functions(mainForm); // You need to pass the
// object of class MainForm as argument to Functions constructor
//If this code is running in code behind for "MainForm" then you can do as following.
var functionObj = new Functions(this);
pPurchaseOrder.Value = txtPurchaseOrder.Text;
pStandard.Value = cmbStandard.Text;
pNotes.Value = txtNotes.Text;
pUID.Value = functionsObj.UniqueID;
//Next Code....
这应该可以解决问题。错误似乎是指您创建函数类(在某个地方您有一个新函数(..),但您没有显示代码…您在代码中使用生成的哈希的确切位置?你想把散列存储在数据库中吗?我想把那个错误作为我尝试过的其他东西的引用发布@ChetanRanpariya我想将哈希代码存储在一个变量中。意思是完成的散列。。我想。。我对这个很陌生。UniqueID是您想要用来从函数
类访问散列的属性?是否要为表单的每个输入值生成哈希?btnSubmitInfo是同一个表单(MainForm)?我尝试过这个,但我再次尝试,以确定是我。这将返回错误:没有与函数的必需形式参数'Identifiers'相对应的参数。函数(MainForm)
谢谢!工作起来很有魅力。我不得不使用var-functionObj=新函数(这个)代码>