Когда я запускаю свое приложение, оно до конца доходит до конца, но когда я проверяю свою БД впоследствии, он никогда не показывает никаких данных. Вот мой код:SQL CE Не вводить информацию в DB
private void button1_Click(object sender, EventArgs e)
{
string saltedcryps = saltpassword(10);
string passWithSalt = (textBox1.Text + saltedcryps);
string hashedResult = hashPassAndSalt(passWithSalt);
if (checkPasswordsMatch() == "B")
{
SqlCeConnection myConnection = new SqlCeConnection("Data Source = pwdb.sdf");
try
{
myConnection.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
SqlCeCommand myCommand = new SqlCeCommand("INSERT INTO PW Values ('Master', '" + saltedcryps + "', '" + hashedResult + "');", myConnection);
myCommand.ExecuteNonQuery();
myConnection.Close();
this.Hide();
}
}
private string checkPasswordsMatch()
{
if (textBox1.Text == "")
{
MessageBox.Show("Passwords cannot be empty");
return "A";
}
else
{
MessageBox.Show(textBox1.Text == textBox2.Text ? "Thanks for registering!" : "Your passwords do not match");
return "B";
}
}
private string saltpassword(int size)
{
RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider();
byte[] buff = new byte[size];
crypto.GetBytes(buff);
return Convert.ToBase64String(buff);
}
private string hashPassAndSalt(string passWithSalt)
{
HashAlgorithm hashAlg = new SHA256CryptoServiceProvider();
byte[] bytValue = System.Text.Encoding.UTF8.GetBytes(passWithSalt);
byte[] bytHash = hashAlg.ComputeHash(bytValue);
string base64 = Convert.ToBase64String(bytHash);
return base64;
}
}
Это button1_Click, что проблема заключается в том, Когда она работает myCommand.ExecuteNonQuery();. он никогда не выдает исключение, он просто продолжается, без фактического ввода какой-либо информации ...
У кого-нибудь есть ключ?
Почему вы только открываете соединение в своем блоке 'try'? Что произойдет, если вы переместите 'SqlCeCommand myCommand = новый SqlCeCommand (« INSERT INTO PW Values («Master», «+ saltedcryps +», «+ hashedResult +» '); », myConnection); myCommand.ExecuteNonQuery(); myConnection.Close(); this.Hide(); 'в ваш блок' try'? – Brian
все еще не работает. блок try пытается открыть соединение, а затем успешно проходит блок catch, а затем запускает следующий код. его в основном то же самое в любом случае –
Посмотрите в свою папку bindebug на копию файла базы данных, наилучшим подходом является использование полного пути в строке подключения – ErikEJ