C# 如何使用where语句编写insert sql?

C# 如何使用where语句编写insert sql?,c#,sql,insert,where,C#,Sql,Insert,Where,问题是为什么我不能将insert值获取到数据库中。(我不确定“where语句”) 目标:我想将随机数保存在数据库中,用于电子邮件身份验证号 当您需要更新查询时使用插入查询的简单错误的一部分,在您的代码中有一些东西需要更改以使其遵循最佳实践 Random rnd = new Random(); int number = rnd.Next(1000, 5000); string cmdText = @"UPDATE Registration SET [Au

问题是为什么我不能将insert值获取到数据库中。(我不确定“where语句”)

目标:我想将随机数保存在数据库中,用于电子邮件身份验证号



当您需要更新查询时使用插入查询的简单错误的一部分,在您的代码中有一些东西需要更改以使其遵循最佳实践

Random rnd = new Random();
int number = rnd.Next(1000, 5000);

string cmdText = @"UPDATE Registration 
                   SET [Authentication] = @number
                   WHERE [Email] = @email";
using(OleDbConnection connection = new OleDbConnection(....connectionstring ....))
using(OleDbCommand command = new OleDbCommand(cmdText, connection))
{
    connection.Open();
    command.Parameters.Add("@number", OleDbType.Integer).Value = number;
    command.Parameters.Add("@email", OleDbType.VarWChar).Value = TextBox1.Text;
    int rowsUpdated = command.ExecuteNonQuery();
    if(rowsUpdated > 0)
        MessageBox.Show("sucessfull");
    else        
        MessageBox.Show("email not found");
}
首先,每个一次性对象(如连接和命令)都应封装在一个容器中,以确保在异常情况下正确关闭和处理。其次,用于与数据库交互的每个命令文本都应该始终使用参数而不是字符串连接来编写。这是向数据库传递值的正确方法,有助于避免Sql注入和解析问题。(更不用说更好地理解您的查询文本了)。

最后,最好避免AddWithValue,因为它有严重的缺点,正如本文所述:

在需要更新查询时使用插入查询的简单错误中的一部分,代码中有几点需要更改,以使其遵循最佳实践

Random rnd = new Random();
int number = rnd.Next(1000, 5000);

string cmdText = @"UPDATE Registration 
                   SET [Authentication] = @number
                   WHERE [Email] = @email";
using(OleDbConnection connection = new OleDbConnection(....connectionstring ....))
using(OleDbCommand command = new OleDbCommand(cmdText, connection))
{
    connection.Open();
    command.Parameters.Add("@number", OleDbType.Integer).Value = number;
    command.Parameters.Add("@email", OleDbType.VarWChar).Value = TextBox1.Text;
    int rowsUpdated = command.ExecuteNonQuery();
    if(rowsUpdated > 0)
        MessageBox.Show("sucessfull");
    else        
        MessageBox.Show("email not found");
}
首先,每个一次性对象(如连接和命令)都应封装在一个容器中,以确保在异常情况下正确关闭和处理。其次,用于与数据库交互的每个命令文本都应该始终使用参数而不是字符串连接来编写。这是向数据库传递值的正确方法,有助于避免Sql注入和解析问题。(更不用说更好地理解您的查询文本了)。

最后,最好避免AddWithValue,因为它有严重的缺点,正如本文所述:

在需要更新查询时使用插入查询的简单错误中的一部分,代码中有几点需要更改,以使其遵循最佳实践

Random rnd = new Random();
int number = rnd.Next(1000, 5000);

string cmdText = @"UPDATE Registration 
                   SET [Authentication] = @number
                   WHERE [Email] = @email";
using(OleDbConnection connection = new OleDbConnection(....connectionstring ....))
using(OleDbCommand command = new OleDbCommand(cmdText, connection))
{
    connection.Open();
    command.Parameters.Add("@number", OleDbType.Integer).Value = number;
    command.Parameters.Add("@email", OleDbType.VarWChar).Value = TextBox1.Text;
    int rowsUpdated = command.ExecuteNonQuery();
    if(rowsUpdated > 0)
        MessageBox.Show("sucessfull");
    else        
        MessageBox.Show("email not found");
}
首先,每个一次性对象(如连接和命令)都应封装在一个容器中,以确保在异常情况下正确关闭和处理。其次,用于与数据库交互的每个命令文本都应该始终使用参数而不是字符串连接来编写。这是向数据库传递值的正确方法,有助于避免Sql注入和解析问题。(更不用说更好地理解您的查询文本了)。

最后,最好避免AddWithValue,因为它有严重的缺点,正如本文所述:

在需要更新查询时使用插入查询的简单错误中的一部分,代码中有几点需要更改,以使其遵循最佳实践

Random rnd = new Random();
int number = rnd.Next(1000, 5000);

string cmdText = @"UPDATE Registration 
                   SET [Authentication] = @number
                   WHERE [Email] = @email";
using(OleDbConnection connection = new OleDbConnection(....connectionstring ....))
using(OleDbCommand command = new OleDbCommand(cmdText, connection))
{
    connection.Open();
    command.Parameters.Add("@number", OleDbType.Integer).Value = number;
    command.Parameters.Add("@email", OleDbType.VarWChar).Value = TextBox1.Text;
    int rowsUpdated = command.ExecuteNonQuery();
    if(rowsUpdated > 0)
        MessageBox.Show("sucessfull");
    else        
        MessageBox.Show("email not found");
}
首先,每个一次性对象(如连接和命令)都应封装在一个容器中,以确保在异常情况下正确关闭和处理。其次,用于与数据库交互的每个命令文本都应该始终使用参数而不是字符串连接来编写。这是向数据库传递值的正确方法,有助于避免Sql注入和解析问题。(更不用说更好地理解您的查询文本了)。

最后,最好避免AddWithValue,因为它有严重的缺点,正如本文所述:

INSERT意味着添加新记录。当您要更改现有记录时,使用WHERE。如果是这种情况,那么您应该使用UPDATE语句而不是instead看起来您想使用UPDATE而不是INSERT我的目标是,如果电子邮件地址在我的数据库中匹配,那么它将在记录中添加一个随机数。command.CommandText=“UPDATE Registration set([Authentication])值(@number),其中[email]=”+TextBox1.Text+“';”;有什么问题吗??我不能让它工作-您不应该将SQL语句连接在一起-使用参数化查询来避免SQL injectionINSERT意味着添加新记录。当您要更改现有记录时,使用WHERE。如果是这种情况,那么您应该使用UPDATE语句而不是instead看起来您想使用UPDATE而不是INSERT我的目标是,如果电子邮件地址在我的数据库中匹配,那么它将在记录中添加一个随机数。command.CommandText=“UPDATE Registration set([Authentication])值(@number),其中[email]=”+TextBox1.Text+“';”;有什么问题吗??我不能让它工作-您不应该将SQL语句连接在一起-使用参数化查询来避免SQL injectionINSERT意味着添加新记录。当您要更改现有记录时,使用WHERE。如果是这种情况,那么您应该使用UPDATE语句而不是instead看起来您想使用UPDATE而不是INSERT我的目标是,如果电子邮件地址在我的数据库中匹配,那么它将在记录中添加一个随机数。command.CommandText=“UPDATE Registration set([Authentication])值(@number),其中[email]=”+TextBox1.Text+“';”;有什么问题吗??我不能让它工作-您不应该将SQL语句连接在一起-使用参数化查询来避免SQL injectionINSERT意味着添加新记录。当您要更改现有记录时,使用WHERE。如果是这种情况,那么您应该使用UPDATE语句而不是instead看起来您想使用UPDATE而不是INSERT我的目标是,如果电子邮件地址在我的数据库中匹配,那么它将在记录中添加一个随机数。command.CommandText=“UPDATE Registration set([Authentication])值(@number),其中[email]=”+TextBox1.Text+“';”;有什么问题吗??我不能让它工作-你不应该连接在一起