2016-09-20 2 views
-1

Я пробовал много вещей, без результата. Мой вопрос заключается в том, как, как говорится в заголовке, как мне обновить поле в базе данных с помощью SQL? Так как я новичок с кодированием и SQL, я буду копировать весь мой код ниже, не зная, какая информация вам может понадобиться:Обновление поля базы данных SQL в C#

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using MySql.Data.MySqlClient; 
using HPJFRMS; 

namespace HPJFRMS 
{ 
    public partial class HomeFRM : Form 
    { 
     private string conn; 
     MySqlConnection connect; 
     string _naam = ""; 
     Form _Loginfrm; 

     public HomeFRM(Form logFrom, string _name) 
     { 
      _Loginfrm = logFrom; 
      InitializeComponent(); 
      lbWelkom.Text = "welkom " + _name; 
      _naam = _name; 
     } 

     private void HomeFRM_Load(object sender, EventArgs e) 
     { 
      tmCheck.Enabled = true; 
     } 

     private bool Todo_ophalen() 
     { 
      db_connection(); 
      MySqlCommand cmdRead = new MySqlCommand(); 
      cmdRead.CommandText = "SELECT `todo` FROM `user` WHERE `username` LIKE '" + _naam + "'"; 
      cmdRead.Connection = connect; 
      MySqlDataReader tdOphalen = cmdRead.ExecuteReader(); 
      if (tdOphalen.Read()) 
      { 
       tbTodo.Text = tdOphalen.GetString(0); 
       connect.Close(); 
       return true; 
      } 
      else 
      { 
       connect.Close(); 
       return false; 
      } 
     } 

     private void db_connection() 
     { 
      try 
      { 
       conn = "Server=127.0.0.1;Database=users;Uid=root;Pwd=;"; 
       connect = new MySqlConnection(conn); 
       connect.Open(); 
      } 
      catch (MySqlException e) 
      { 
       throw; 
      } 
      finally 
      { 
       lbStatus.ForeColor = Color.Red; 
      } 
     } 

     private void btBewerk_Click(object sender, EventArgs e) 
     { 
      if (btBewerk.Text == "Bewerken") 
      { 
       tbTodo.ReadOnly = false; 
       btBewerk.Text = "Opslaan"; 
       tmCheck.Enabled = false; 
      } 
      else 
      { 
       /* HERE COMES THE "UPDATE" CODE */ 
      } 
     } 

     private void tmCheck_Tick(object sender, EventArgs e) 
     { 
      try 
      { 
       bool T = Todo_ophalen(); 
       if (T) 
       { 
        lbStatus.ForeColor = Color.Green; 
        lbStatus.Text = "Online"; 
       } 
      } 
      catch 
      { 
       lbStatus.ForeColor = Color.Red; 
       lbStatus.Text = "Offline"; 
      } 
     } 
    } 
} 
+3

Есть множество руководств о том, как обновить строки в базе данных SQL с помощью C#. Следуйте одному из этих руководств, и если у вас возникла проблема с его работой, задайте вопрос об этой конкретной проблеме. Маловероятно, что кто-нибудь просто напишет код для вас, это не то, что для сообщества. Вы также должны посмотреть на параметризованные запросы, ваш код уязвим для атаки. – Equalsk

+1

Что-то подсказывает мне, что это явно какое-то школьное задание. Вы можете продолжить ответы, приведенные ниже, но вам явно не хватает навыков, чтобы понять, что происходит. Я думаю, вам лучше не выполнять это задание (это нормально), а не использовать других людей, их код не знает, что происходит, и создавая впечатление, что вы понимаете свою тему. – Jens

+0

@Jens Нет, это не для школы. Это для моей стажировки, где я должен сделать инструмент, который будет использоваться только нами. Я очень похожа на новичка? я попытался скрыть это: 3. В любом случае, повторяя коды, которые я нахожу здесь (собственные и другие вопросы), я могу узнать это быстрее, чем просто ctrl-c и ctrl-v -ing. Сегодня я написал код обновления al! такое достижение. В любом случае, спасибо вам за беспокойство! (но не беспокойтесь, я получил это;)) – Tjazz

ответ

1

Существуют различные методы, вы можете использовать любой из них.

Метод 1: с помощью простой SQL-запрос

public void Update(Int UserId,String UserName ) 
{ 
    SqlConnection con = new SqlConnection("Your Connection String"); 
    con.Open(); 
    string str = " UPDATE [dbo].[User] SET [UserName] = "+UserName +" WHERE [UserId] ="+ UserId+""; 
    SqlCommand cmd = new SqlCommand(str , con); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 
} 

Способ 2: с помощью хранимой процедуры

Сначала выполнить хранимую процедуру в базе данных.

Пример

CREATE PROCEDURE [dbo].[UpdateUser] 
    @UserId int, 
    @UserName varchar(25) 
AS 
BEGIN 
    UPDATE [dbo].[User] 
    SET [UserName] = @UserName 
    WHERE [UserId] = @UserId 
END 

public void Update(Int UserId,String UserName ) 
{ 
    SqlConnection con = new SqlConnection("Your Connection String"); 
    con.Open(); 

    SqlCommand cmd = new SqlCommand("UpdateUser", con); //UpdateUser is the name of stored procedure you created 
    cmd.CommandType = CommandType.StoredProcedure; 

    cmd.Parameters.AddWithValue("UserName ", UserName); 
    cmd.Parameters.AddWithValue("UserId", UserId); 

    cmd.ExecuteNonQuery(); 

    con.Close(); 
} 
1

Вот выборочный метод для обновления:

public void UpdateUser(User userToUpdate) 
{ 
    try 
    { 
     string sqlStatement = @"UPDATE USERS " + 
           "SET DisplayName = @DisplayName, Username = @Username" + 
           "WHERE Id = @Id"; 

     using (SqlConnectionconn = new SqlConnection("connection string here")) 
     using (SqlCommand cmd = new SqlCommand(sqlStatement, conn)) 
     { 
      cmd.Parameters.Add(new SqlParameter("@Id", userToUpdate.Id)); 
      cmd.Parameters.Add(new SqlParameter("@DisplayName", userToUpdate.DisplayName)); 
      cmd.Parameters.Add(new SqlParameter("@UserName", userToUpdate.UserName)); 

      cmd.ExecuteNonQuery(); 
     } 
    } 
    catch (DbException ex) 
    { 
     throw ExceptionHandler.CreateSystemException(ex, ErrorStrings.DATABASE_ERROR); 
    } 
} 

Это вы должны начать работать, но вам действительно нужно прочитать эту тему, поскольку объяснение правильной практики будет слишком длинным для ответа здесь.

1

это может быть, вам нужно

MySqlConnection con = new MySqlConnection(conStr); 
try 
{ 
    con.Open(); 
    MySqlCommand cmd = new MySqlCommand(con); 
    cmd.CommandText = "UPDATE table_name SET field_name_1 = ?param1, field_name_2 = ?param2 WHERE id = ?id"; 

    cmd.Parameters.Clear(); 
    cmd.Parameters.AddWithValue("?param1", value1); 
    cmd.Parameters.AddWithValue("?param2", value2); 
    cmd.Parameters.AddWithValue("?id", value3); 

    cmd.ExecuteNonQuery(); 
} 
catch (MySqlException ee) 
{ 
    MessageBox.Show(ee.Message); 
} 
finally 
{ 
    con.Close(); 
    con.Dispose(); 
} 
+0

это в mysql, если вы используете метку изменения mssql? с помощью @ –

+0

вам следует рассмотреть возможность использования модели данных ADO.net Entity, которая поможет вам быстрее в кодировании. –

Смежные вопросы