数据未持久到数据库中

时间:2019-12-13 19:39:46

标签: c# sql-server

没有错误显示,当我按插入时,将显示“已成功保存记录”消息,但数据库中未显示数据。

我在做什么错了?

mEqualizer = new Equalizer(0, mPlayer.getAudioSessionId());

插入语句

<receiver android:name=".receivers.AudioSessionReceiver">
        <intent-filter>
            <action android:name="android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION"/>
        </intent-filter>
</receiver>

1 个答案:

答案 0 :(得分:0)

这是一种处理逻辑的更简洁的方法。它将处理异常,数据库连接,并且查询已参数化。所有这三个都是您发布的代码中的主要问题。我宁愿在按钮单击事件中直接看到数据层,而不是逻辑,但这对于正常工作并不重要。我什至不会使用您拥有的那个DBConnection类。没有很多工作就无法挽救的漏洞太多了。

private void btnInsert_Click(object sender, EventArgs e)
{
    try
    {
        if (Validation())
        {
            if (IfUsernameExists(txtUsername.Text))
            {
                MessageBox.Show("Username already exists!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
            {
                using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["YourConnectionString"].ConnectionString))
                {
                    conn.Open();
                    string sql = "INSERT INTO[Users](name, email, username, password, role, dob, address) VALUES(@Name, @Email, @username, @password, @role, @dob, @address)";
                    using (var cmd = new SqlCommand(sql, conn))
                    {
                        cmd.Parameters.Add("@Name", SqlDbType.VarChar, 50).Value = txtName.Text;
                        cmd.Parameters.Add("@Email", SqlDbType.VarChar, 50).Value = txtEmail.Text;
                        cmd.Parameters.Add("@username", SqlDbType.VarChar, 50).Value = txtUsername.Text;
                        cmd.Parameters.Add("@password", SqlDbType.VarChar, 50).Value = txtPassword.Text; //This really needs to be salted and hashed instead of plain text!!!!
                        cmd.Parameters.Add("@role", SqlDbType.VarChar, 50).Value = cbRole.Text;
                        cmd.Parameters.Add("@dob", SqlDbType.DateTime).Value = dtDob.Value;
                        cmd.Parameters.Add("@address", SqlDbType.VarChar, 50).Value = txtAddress.Text;
                        cmd.ExecuteNonQuery();
                    }
                }
                MessageBox.Show("Record Saved Succesfully!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
                Clear_Data();
                LoadData();
            }
        }
    }
    catch(Exception ex)
    {
        //Log the error here so you have a record of it.
        //Maybe even send an email that something failed
        MessageBox.Show(ex.ToString(), "An error occurred.", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

由于配置文件中没有连接(尽管应该),因此可以将其用于连接。

using (SqlConnection conn = new SqlConnection(@"Data Source=PC-67\SQLEXPRESS;Initial Catalog=PayrollDB;Integrated Security=True;"))