如何使用C#.net更新表中的数据

我打开了一个表单,它在复选框中加载了某种数据(如用户名,CNIC,联系号等),现在我想以这样的方式更新数据,我只需更改文本框中的文本并单击保存更改以保存它。 我已经尝试过,但我无法以正确的方式做到这一点。

让我告诉你我是如何编码的,我在frmViewformList savechanges按钮中执行的代码是:

private void btnSaveChanges_Click(object sender, EventArgs e) { string sql; string UserName; UserName = txtUserName.Text; // saving data loaded on run time to UserName sql = ""; sql += "UPDATE UserLogin"; sql += "SET Name = "+ //how to access data I've changed in TextBox after loading +""; sql += "WHERE Name= " + //how to access data which was in text box right after loading + ""; // } 

我对如何引用数据感到困惑,比如文本框中已有的名称或我已更改的名称以及如何在SQL查询中编写它…

我知道,这个问题有点令人困惑。 让我解释; 加载表单,在加载事件中有数据库填充文本框,我更改文本框中的数据并保存单击以便更新查询运行并更改数据库中的数据。 我无法在这里创建逻辑如何执行此操作,任何人都可以帮助我,对不起我是C#的新开发人员,这就是为什么我有点困惑。

您应该使用Sql参数以避免SQL注入,这可能使您的数据库容易受到恶意攻击。

将执行更新的逻辑与创建查询的逻辑分开是一个好主意,这样您就不必重复代码,从而可以更轻松地维护代码。

以下是您可以参考的示例:

 public void DoWork() { // Build Query Use @Name Parameters instead of direct values to prevent SQL Injection StringBuilder sql = new StringBuilder(); sql.Append("UPDATE UserLogin"); sql.Append("SET Name = @UpdatedName"); sql.Append("WHERE Name = @Name"); // Create parameters with the value you want to pass to SQL SqlParameter name = new SqlParameter("@Name", "whatEverOldNameWas"); SqlParameter updatedName = new SqlParameter("@UpdatedName", txtUserName.Text); Update(sql.ToString(), new [] { name, updatedName }); } private static readonly string connectionString = "Your connection string" private static readonly DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.SqlClient"); public static int Update(string sql, SqlParameter[] parameters) { try { using (DbConnection connection = factory.CreateConnection()) { connection.ConnectionString = connectionString; using (DbCommand command = factory.CreateCommand()) { command.Connection = connection; command.CommandText = sql; foreach (var parameter in parameters) { if (parameter != null) command.Parameters.Add(parameter); } connection.Open(); return command.ExecuteNonQuery(); } } } catch (Exception) { throw; } } 

你会想要从你的输入中删除所有’,’和`字符,这样人们就不能注入SQL。当你做SET Name = " + ,你会想要实际包装你在引号中包含的内容,因为它是一个字符串: SET Name = '" + UserName "' " +...

这可能是最好的使用

string.Format("UPDATE UserLogin SET Name = '{0}' WHERE Name = '{1}'", UserName, FormerUserName);

然后,您将using System.Data.SqlClient;执行查询using System.Data.SqlClient; 然后使用SqlConnection建立与服务器的连接,并执行某种SqlCommand ; 看看: http : //www.codeproject.com/Articles/4416/Beginners-guide-to-accessing-SQL-Server-through-C

以下是使用ADO.NET将数据插入数据库并假设SQL Server数据库的代码片段。

在你的.cs文件的顶部你应该有。

 using System.Data.SqlClient; // for sql server for other data bases you should use OleClient instead. 

在按钮点击事件中,您可以进行以下操作。

  // to know how to get the right connection string please check this site: http://www.connectionstrings.com string connString = "database connection string here"; using (SqlConnection con = new SqlConnection(connString)) { con.Open(); //insert text into db string sql_insert = "INSERT INTO ....."; // Use parameters here. SqlCommand cmd_insert = new SqlCommand(sql_insert, con); int rowsAffected = cmd_insert.ExecuteNonQuery(); } 

希望这足以让你开始。