C# 在c中创建sql连接#

C# 在c中创建sql连接#,c#,.net,sql-server,C#,.net,Sql Server,我对这个网站和编程都是新手。我目前正在通过销售点创建一个库存系统。它使用情态和非情态形式。我的问题是,我正在处理更改密码对话框,该对话框必须连接到数据库才能覆盖密码字段。我使用的数据库是MicrosoftSQLServerManagementStudio express。以下是我到目前为止所作的评论和必要的评论。请注意,在“设计”表单上,我有一个绑定到数据库的组合框。我哪里出错了 private void ChangePwdButton_Click(object sender, EventArg

我对这个网站和编程都是新手。我目前正在通过销售点创建一个库存系统。它使用情态和非情态形式。我的问题是,我正在处理
更改密码
对话框,该对话框必须连接到数据库才能覆盖密码字段。我使用的数据库是MicrosoftSQLServerManagementStudio express。以下是我到目前为止所作的评论和必要的评论。请注意,在“设计”表单上,我有一个绑定到数据库的组合框。我哪里出错了

private void ChangePwdButton_Click(object sender, EventArgs e)
{
  SqlConnection sqlconn = new SqlConnection();
  sqlconn.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Gerald-   dean Martin\Documents\SQL Server Management Studio Express\Projects\BodyMates.mdf;Integrated Security=True;User Instance=True";
     sqlconn.Open();
    string oldpwd = txtOldPwd.Text;
    string newpwd = txtNewPwd.Text;
    string confirmNewPwd = txtConfirmNewPwd.Text;
    string sqlquery = "UPDATE [Employee] SET Pwd=@newpass where EmployeeCode=@empcode";
    SqlCommand cmd = new SqlCommand(sqlquery, sqlconn);
    cmd.Parameters.AddWithValue("@newpass", txtConfirmNewPwd.Text);
    cmd.Parameters.AddWithValue("@empcode", comboEmpCode.SelectedValue);
    //cmd.Parameters.AddWithValue("@pwd", txtNewPwd.Text);
    cmd.Connection = sqlconn;
    cmd.ExecuteNonQuery();
    SqlDataReader dr = cmd.ExecuteReader();             
    while (dr.Read())
    {
        if(txtOldPwd.Text == dr["pwd"].ToString() && (txtNewPwd.Text == txtConfirmNewPwd.Text))
        {
            if (comboEmpCode.SelectedIndex == 0)
            {
               string query = "UPDATE [Employee] SET Pwd = '" + txtConfirmNewPwd.Text + "'";
            }
        }

       // if ((txtNewPwd.Text == dr["newpwd"].ToString()) & (txtConfirmNewPwd.Text == (dr["confirmNewPwd"].ToString()))) { }
    }
   // MessageBox.Show("Password was changed Successfully!", "Password Change", MessageBoxButtons.OK, MessageBoxIcon.Information); 
}
您可以使用like
cmd.ExecuteNonQuery()返回
int
值。像这样使用它

int i = cmd.ExecuteNonQuery();
SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}", reader[0]));
        }
也是这样,

int i = cmd.ExecuteNonQuery();
SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}", reader[0]));
        }
您可以读取返回数据的列。像第一列
读卡器[0]
,第二列
读卡器[1]
等等

但在所有这些信息之前,如果您是编程新手,您可以找到许多关于Stackoverflow的书籍建议和有用信息。检查这些物品

您可以使用like
cmd.ExecuteNonQuery()返回
int
值。像这样使用它

int i = cmd.ExecuteNonQuery();
SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}", reader[0]));
        }
也是这样,

int i = cmd.ExecuteNonQuery();
SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}", reader[0]));
        }
您可以读取返回数据的列。像第一列
读卡器[0]
,第二列
读卡器[1]
等等

但在所有这些信息之前,如果您是编程新手,您可以找到许多关于Stackoverflow的书籍建议和有用信息。检查这些物品



为什么您认为可以读取更新命令<代码>cmd.ExecuteNonQuery();SqlDataReader dr=cmd.ExecuteReader()。顺便说一句,
cmd.Connection=sqlconn
是多余的。具体什么不起作用?@TimSchmelter,特别是当您通过
新建SqlCommand(sqlquery,sqlconn)
:)创建命令时,您是否以明文形式存储用户密码?它们在数据库的后端被加密了吗?另外,为什么要在代码中混合范例,在顶部是一个参数化查询,然后在底部是一个使用连接字符串构建的更新查询?第二个SQL字符串是一个等待发生的SQL注入攻击,如果您以明文形式存储这些密码,这将是一个巨大的安全漏洞,有人会发现并利用它。此外,出于对内存的热爱,使用
语句将数据库对象包装在
中,以便在它们超出范围时正确处理。为什么您认为可以从更新命令读取<代码>cmd.ExecuteNonQuery();SqlDataReader dr=cmd.ExecuteReader()。顺便说一句,
cmd.Connection=sqlconn
是多余的。具体什么不起作用?@TimSchmelter,特别是当您通过
新建SqlCommand(sqlquery,sqlconn)
:)创建命令时,您是否以明文形式存储用户密码?它们在数据库的后端被加密了吗?另外,为什么要在代码中混合范例,在顶部是一个参数化查询,然后在底部是一个使用连接字符串构建的更新查询?第二个SQL字符串是一个等待发生的SQL注入攻击,如果您以明文形式存储这些密码,这将是一个巨大的安全漏洞,有人会发现并利用它。此外,出于对内存的热爱,使用
语句将数据库对象包装在
中,以便它们在超出范围时得到正确处理。+1用于在底部将其指向正确的方向。干杯@索纳,莫里斯和拉兹别列佐夫斯基,谢谢你的回复。老实说,我不明白你的回答,因为我说我是新手。你能推荐我读一本书吗?这本书肯定会让我了解整个连接的事情,因为我需要理解每一行语句的含义。再次感谢。@GerryD对于C#和数据库连接,我建议从新手到专业人士开始C#2008数据库最适合您。查看“发件人”。@GerryD如果您觉得这个答案有用,您可以选择一个答案。@Soner,好的。我很感激。我现在正在采取措施来获得这本书。谢谢+1为他在底部指出正确的方向。干杯@索纳,莫里斯和拉兹别列佐夫斯基,谢谢你的回复。老实说,我不明白你的回答,因为我说我是新手。你能推荐我读一本书吗?这本书肯定会让我了解整个连接的事情,因为我需要理解每一行语句的含义。再次感谢。@GerryD对于C#和数据库连接,我建议从新手到专业人士开始C#2008数据库最适合您。查看“发件人”。@GerryD如果您觉得这个答案有用,您可以选择一个答案。@Soner,好的。我很感激。我现在正在采取措施来获得这本书。谢谢