【问题标题】:How can I add some values into my database如何将一些值添加到我的数据库中
【发布时间】:2018-12-25 11:38:25
【问题描述】:

我是 C# 的初学者,我编写了一个连接到我的数据库的代码,但它给了我一个错误

我从一开始就做了所有事情,但什么都没发生

private void btnSubmit_Click(object sender, EventArgs e) 
{
     string conString = "data source=DESKTOP-D5VFL9P; initial catalog = university; integrated security = True; MultipleActiveResultSets = True;";

     using (SqlConnection connection = new SqlConnection(conString)) 
     {
         connection.Open();

         using(SqlCommand command = new SqlCommand("INSERT INTO Persons (PersonID, LastName, FirstName, Age, City) VALUES (" + int.Parse(txtPersonID.Text) + ", '" +
    txtLastName.Text + "', '" + txtFirstName.Text + "' ," + int.Parse(txtAge.Text) + ", '" + txtCity.Text + "'", connection)) 
         {
             using(SqlDataReader reader = command.ExecuteReader()) 
             {
                  MessageBox.Show("Data inserted");

                  txtFirstName.Text = "";
                  txtLastName.Text = "";
                  txtPersonID.Text = "";
                  txtAge.Text = "";
                  txtCity.Text = "";
             }
         }
     }
 }

我想在我的数据库中添加一些值

【问题讨论】:

  • 我不知道出了什么问题,但是如果您添加有关错误消息的详细信息,它可能会帮助其他人回答您的问题。
  • 也许,如果你使用command.ExecuteNonQuery()而不是command.ExecuteReader(),你会得到你想要的结果!
  • 什么是异常?
  • .ExecuteReader() 将返回一个 SqlDataReader 以实际读取数据库中的一些数据 - 这对于 inserting 数据是完全错误的 - 使用 @ 987654327@ 改为执行任何不读取数据的 SQL 语句 - INSERTUPDATEDELETE。任何初学者 ADO.NET 教程都应该让你明白......

标签: c# sql-server database


【解决方案1】:

城市后面应该有一个)。喜欢txtCity.Text + "')"

【讨论】:

  • 好像是评论
  • "你必须有 50 个声望才能发表评论" ...我只有 7 个
  • 我认为现在你有 17 个,但你可以用更好的方式解释你的答案
  • 虽然这确实解决了一个问题,但它并没有停止注入;您最好提供有关如何参数化查询的详细信息。如果你有一个带有撇号的城市,它也会失败;例如 Bishop's Stortford。
【解决方案2】:

我不推荐这个,因为它肯定会为SQL Injection Attack 打开一扇门,但请使用下面的字符串,这将适用于您的情况:

string cmdText =  "INSERT INTO Persons(PersonID,LastName,FirstName,Age,City)" +
                     " VALUES ('" + int.Parse(txtPersonID.Text) + "', " +
                               "'" + txtLastName.Text + "', " +
                               "'" + txtFirstName.Text + "' ,'" +
                               int.Parse(txtAge.Text) + "', '" +
                               txtCity.Text + "')"

我会这样做:

using (SqlConnection conn = new SqlConnection(conString))
{
    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = 
        "INSERT INTO Persons (PersonID,LastName,FirstName,Age,City) VALUES (@PersonID,@LastName,@FirstName,@Age,@City)";
    cmd.Parameters.AddWithValue("@PersonID", int.Parse(txtPersonID.Text));
    cmd.Parameters.AddWithValue("@LastName", txtLastName.Text);
    cmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text);
    cmd.Parameters.AddWithValue("@Age", int.Parse(txtAge.Text));
    cmd.Parameters.AddWithValue("@City", txtCity.Text);
    cmd.Connection = conn;
    conn.Open();
    int rowsAffected = cmd.ExecuteNonQuery();
    if(rowsAffected > 0)
    {
        MessageBox.Show("Data inserted");
    }
    else
    {
       MessageBox.Show("Failed");
    }
    conn.Close();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    • 2021-04-29
    • 1970-01-01
    • 2021-12-16
    相关资源
    最近更新 更多