ilovejinglei 原文 C#中保存datagridview中的数据时报错“动态SQL生成失败。找不到关键信息”
问题描述
相关代码
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 Oracle.ManagedDataAccess.Client; using Oracle.ManagedDataAccess.Types; namespace 订单系统 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private DataSet ds; private OracleDataAdapter oda; private OracleConnection con; private OracleCommand cmd; private void Form1_Load(object sender, EventArgs e) { try { string conString = "User Id=dingzi; password=dingzi;" + "Data Source=localhost:1521/orcl; Pooling=false;"; con = new OracleConnection(); con.ConnectionString = conString; con.Open(); cmd = con.CreateCommand(); cmd.CommandText = "select * from stock order by 订货日期 desc"; OracleDataReader reader = cmd.ExecuteReader(); ds = new DataSet(); oda = new OracleDataAdapter(cmd.CommandText, con); oda.Fill(ds); dataGridView1.DataSource = ds.Tables[0]; dataGridView1.Columns["订货日期"].DefaultCellStyle.Format = "yyyy/MM/dd HH:mm:ss";//此句要放在ataGridView1.DataSource之后; con.Close(); } catch (Exception E) { MessageBox.Show(E.Message); } } private void button1_Click(object sender, EventArgs e) { OracleCommandBuilder cx = new OracleCommandBuilder(oda); oda.Update(ds); con.Open(); OracleCommand cmd = new OracleCommand("update stock set 订货日期=sysdate where 订货日期 is null", con); cmd.ExecuteNonQuery(); MessageBox.Show("保存成功", "提示"); //更新数据后刷新数据 cmd = con.CreateCommand(); cmd.CommandText = "select * from stock order by 订货日期 desc"; OracleDataReader reader = cmd.ExecuteReader(); ds = new DataSet(); oda = new OracleDataAdapter(cmd.CommandText, con); oda.Fill(ds); dataGridView1.DataSource = ds.Tables[0]; con.Close(); } } }
解决问题的提示:
这个错误是因为没有主键。
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5945136.html,如需转载请自行联系原作者