ADO.NET UPDATE 代码出现问题

发布于 2024-11-25 02:28:40 字数 1932 浏览 1 评论 0原文

有人可以快速浏览一下我的 ado.net 代码吗?我正在尝试从数据集中更新行,但它不起作用。我缺少一些基本的代码片段,它只是在逃避我。我已经验证 DataRow 实际上包含正确的数据,因此行本身是准确的。

非常感谢。

 try
            {
                //basic ado.net objects
                SqlDataAdapter dbAdapter = null;
                DataSet returnDS2 = new DataSet();

                //a new sql connection
                SqlConnection myConn = new SqlConnection();
                myConn.ConnectionString = "Server=myserver.mydomain.com;"
                     + "Database=mydatabase;"
                     + "User ID=myuserid;"
                     + "Password=mypassword;"
                     + "Trusted_Connection=True;";

                //the sqlQuery
                string sqlQuery = "select * from AVLUpdateMessages WHERE ID = 21";

                //another ado.net object for the command
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = myConn;
                cmd.CommandText = sqlQuery;

                //open the connection, execute the SQL statement and then close the connection.
                myConn.Open();

                //instantiate and fill the sqldataadapter
                dbAdapter = new SqlDataAdapter(cmd);
                dbAdapter.Fill(returnDS2, @"AVLUpdateMessages");

                //loop through all of the rows; I have verified that the rows are correct and returns the correct data from the db
                for (int i = 0; i <= returnDS2.Tables[0].Rows.Count - 1; i++)
                {
                    DataRow row = returnDS2.Tables[0].Rows[i];
                    row.BeginEdit();
                    row["UpdatedText"] = @"This is a test...";
                    row.EndEdit();
                }

                //let's accept the changes
                dbAdapter.Update(returnDS2, "AVLUpdateMessages");
                returnDS2.AcceptChanges();

                myConn.Close();

            }  

Could somebody take a quick peek at my ado.net code? I am trying to update the row from a dataset, but it just isn't working. I am missing some elemental piece of the code, and it is just eluding me. I have verified that the DataRow actually has the correct data in it, so the row itself is accurate.

Many thanks in advance.

 try
            {
                //basic ado.net objects
                SqlDataAdapter dbAdapter = null;
                DataSet returnDS2 = new DataSet();

                //a new sql connection
                SqlConnection myConn = new SqlConnection();
                myConn.ConnectionString = "Server=myserver.mydomain.com;"
                     + "Database=mydatabase;"
                     + "User ID=myuserid;"
                     + "Password=mypassword;"
                     + "Trusted_Connection=True;";

                //the sqlQuery
                string sqlQuery = "select * from AVLUpdateMessages WHERE ID = 21";

                //another ado.net object for the command
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = myConn;
                cmd.CommandText = sqlQuery;

                //open the connection, execute the SQL statement and then close the connection.
                myConn.Open();

                //instantiate and fill the sqldataadapter
                dbAdapter = new SqlDataAdapter(cmd);
                dbAdapter.Fill(returnDS2, @"AVLUpdateMessages");

                //loop through all of the rows; I have verified that the rows are correct and returns the correct data from the db
                for (int i = 0; i <= returnDS2.Tables[0].Rows.Count - 1; i++)
                {
                    DataRow row = returnDS2.Tables[0].Rows[i];
                    row.BeginEdit();
                    row["UpdatedText"] = @"This is a test...";
                    row.EndEdit();
                }

                //let's accept the changes
                dbAdapter.Update(returnDS2, "AVLUpdateMessages");
                returnDS2.AcceptChanges();

                myConn.Close();

            }  

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

帅哥哥的热头脑 2024-12-02 02:28:40

我认为您需要在数据适配器中进行更新查询。我知道,这很糟糕...或者您可以使用 CommandBuilder 类自动生成 CRUD 操作的查询。

示例位于: http://www.programmersheaven.com/2/FAQ- ADONET-CommandBuilder-准备数据集

I think you need an update query in your data adapter. I know, this sucks... Alternatively you can use CommandBuilder class to automatically generate queries for CRUD operations.

example at: http://www.programmersheaven.com/2/FAQ-ADONET-CommandBuilder-Prepare-Dataset

谎言 2024-12-02 02:28:40

您也许可以使用 SqlCommandBuilder 来帮忙。在 Fill 调用之后,添加以下语句。这会将命令生成器与数据适配器关联起来,并且(如果有可用的主键)它应该为您生成更新语句。请注意,命令生成器背后有一些费用。它可能与其他一切没有多大关系,但它确实涉及查看表的模式信息(以获取主键信息、字段名称、字段类型等)并生成涉及表中所有字段的 INSERT、DELETE 和 UPDATE 语句。桌子。

SqlCommandBuilder cb = new SqlCommandBuilder(dbAdapter);

You might be able to use SqlCommandBuilder to help out. After the Fill call, add the following statement. That will associate a command builder with the data adapter and (if there is a primary key available) it should generate the update statement for you. Note that there is some expense behind the command builder. It may not be much relative to everything else, but it does involve looking at schema information (to get primary key information, field names, field types, etc.) for the table and generating INSERT, DELETE, and UPDATE statements involving all fields in the table.

SqlCommandBuilder cb = new SqlCommandBuilder(dbAdapter);
忆梦 2024-12-02 02:28:40

等等,为什么不做类似的事情呢?

update AVLUpdateMessages set UpdatedText = 'This is a test...' where id = 21

如果您选择表中的所有行来一次更新一行,那么您可能做错了。 SQL 是你的朋友。

Wait, why not something like

update AVLUpdateMessages set UpdatedText = 'This is a test...' where id = 21

If you're picking through all the rows of a table to update one at a time, you're probably doing it wrong. SQL is your friend.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文