用this.dataTable.clear()方法将DataTable中的数据清空以后如何将清空结果保存到oracle数据库

博主表示查了很久未找到相关资料,无奈发出求助。从标签推测,求助内容可能与Oracle数据库有关。

各位高手帮帮忙啊,我查了很久一直没有找到这方面的资料,无奈只能求助了。

<!-- 扫码记录列表 --> <ListView x:Name="ScanListView" Grid.Row="3" ItemsSource="{Binding scanItems}"> 这个没有 更新,没有加载数据 MainWindows.xaml.cs using Oracle.ManagedDataAccess.Client; using PackingApp.Services; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Configuration; using System.Data; using System.Threading.Tasks; using System.Web.UI.WebControls; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using static PackingApp.Services.Logic; namespace PackingApp { public partial class MainWindow : Window { private ObservableCollection<ScanItem> scanItems = new ObservableCollection<ScanItem>(); private int currentIndex = 1; private string currentBoxNumber = "未创建"; private string prodtype = "未创建"; private string proddesc = "未创建"; public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo"); private string dbConnectString = ConfigurationManager.AppSettings["Conn"].ToString(); // 保存数据库 private string insertHistorySql = @" INSERT INTO rm_Pack_history (PackID, PackDate, PackBarcode) VALUES (:PackID, :PackDate, :PackBarcode)"; private string updatePackInfoSql = @" UPDATE rm_pack_info SET currquantity = currquantity + 1 WHERE PackID = :PackID"; public MainWindow() { InitializeComponent(); loginfo.Info("MainWindow APP start Done."); DataContext = this; // 必须设置,否则绑定找不到 scanItems LoadComboBox(); ModelComboBox.SelectedIndex = -1; } private void ScanInput_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { string code = ScanInput.Text.Trim(); if (!string.IsNullOrEmpty(code)) { SaveScan(BoxNumberText.Text, DateTime.Now, code); scanItems.Add(new ScanItem { Index = currentIndex++, PackID = BoxNumberText.Text, PackDate = DateTime.Now, PackBarcode = code }); UpdateDisplay(); ScanInput.Clear(); StatusMessage.Text = "打包成功"; } else { StatusMessage.Text = "打包失败:扫码内容为空"; } } } private void CreatePackage_Click(object sender, RoutedEventArgs e) { CreatePackage(); UpdateDisplay(); } private async void OpenPackage_Click(object sender, RoutedEventArgs e) { OracleDBHelper dbHelper = new OracleDBHelper(dbConnectString); string packid = BoxNoInput.Text.Trim(); string Packinfo_sql = string.Format(@"select a.prodtype,b.proddesc,b.packsize,a.currquantity from rm_pack_info a join rm_pack_generator b on a.prodtype = b.prodtype where a.packid= '{0}'", packid); DataTable Packdate = await dbHelper.ExecuteQueryAsync(Packinfo_sql); if (Packdate.Rows.Count > 0) { CurrentModelText.Text = Packdate.Rows[0]["prodtype"].ToString(); DescModelText.Text = Packdate.Rows[0]["proddesc"].ToString(); PackSizeText.Text = Packdate.Rows[0]["packsize"].ToString(); BoxNumberText.Text = packid; OpenPackageHistory(packid); } } private async void CreatePackage() { if (ModelComboBox.SelectedItem != null) { OracleDBHelper dbHelper = new OracleDBHelper(dbConnectString); string[] parts = ModelComboBox.SelectedItem.ToString().Split('-'); if (parts.Length > 0) { prodtype = parts[0].Trim(); // index = 0 的部分 proddesc = string.Join("-", parts, 1, parts.Length - 1); // 剩余部分用 "-" 连接起来作为 proddesc loginfo.Info("Prodtype: " + prodtype); var packinfo = await CreatePackId(prodtype); currentBoxNumber = packinfo.PackId; CurrentModelText.Text = prodtype; DescModelText.Text = proddesc; PackSizeText.Text = packinfo.PackSize; BoxNumberText.Text = currentBoxNumber; StatusMessage.Text = "已打开包装:" + currentBoxNumber; scanItems.Clear(); } else { MessageBox.Show("型号不存在"); ModelComboBox.SelectedIndex = 0; } } } private void UpdateDisplay() { int count = 0; int PackSize = Convert.ToInt32(PackSizeText.Text); foreach (var item in scanItems) { if (item.PackID == BoxNumberText.Text) count++; } QuantityText.Text = count.ToString(); } private async void LoadComboBox() { OracleDBHelper dbHelper = new OracleDBHelper(dbConnectString); string sql = "SELECT PRODTYPE, PRODDESC FROM rm_pack_generator WHERE ACTIVE = 1"; DataTable dt = await dbHelper.ExecuteQueryAsync(sql); // 使用 await 等待异步结果 List<string> items = new List<string>(); foreach (DataRow row in dt.Rows) { items.Add($"{row["PRODTYPE"]} - {row["PRODDESC"]}"); } ModelComboBox.ItemsSource = items; } private async Task<PackInfo> CreatePackId(string Prodtype) { string Packid = ""; OracleDBHelper dbHelper = new OracleDBHelper(dbConnectString); string GetLashPackid_sql = $"select Lastpackid,packsize from rm_pack_generator WHERE Prodtype = '{Prodtype}' and ACTIVE = 1"; DataTable dt = await dbHelper.ExecuteQueryAsync(GetLashPackid_sql); if (dt.Rows.Count == 0) { MessageBox.Show("箱号创建失败,最新箱号没有找到"); loginfo.Info("箱号创建失败,最新箱号没有找到"); return null; } string packsize = dt.Rows[0]["packsize"].ToString(); string LastPackId = dt.Rows[0]["Lastpackid"].ToString(); string PackidType = LastPackId.Substring(0, 3); string PackID_Year = LastPackId.Substring(3, 2); string PackNo = LastPackId.Substring(5, 4); int No = Convert.ToInt32(PackNo); if (Logic.IsNewYear(PackID_Year)) { PackID_Year = DateTime.Now.Year.ToString().Substring(2, 2); PackNo = "0001"; } else if (No + 1 > 9999) { MessageBox.Show("箱号创建失败,今年箱号已达最大9999"); loginfo.Info("箱号创建失败,今年箱号已达最大9999"); return null; } else { No = No + 1; PackNo = No.ToString().PadLeft(4, '0'); } try { Packid = PackidType + PackID_Year + PackNo; string CreatePackid_InsertSql = string.Format("insert into rm_pack_INFO values ('{0}','{1}','{2}',0,1,sysdate)", Packid, Prodtype, packsize); loginfo.Info(CreatePackid_InsertSql); int i = dbHelper.ExecuteNonQuery(CreatePackid_InsertSql); loginfo.Info("Save Pack info DB " + i + " Succer"); } catch (Exception e) { MessageBox.Show("箱号创建失败存储失败"); loginfo.Info("SaveDB Fail" + e.Message); return null; } return new PackInfo { PackId = Packid, PackSize = packsize }; } private async void OpenPackageHistory(string PackID) { if (PackID != null) { OracleDBHelper dbHelper = new OracleDBHelper(dbConnectString); string PackHistory_sql = string.Format("select packid,Packdate,packBarcode from rm_Pack_history where packid = '{0}'",PackID); DataTable PackHistory_dt = await dbHelper.ExecuteQueryAsync(PackHistory_sql); ConvertToScanItems(PackHistory_dt); } } //scanItems private ObservableCollection<ScanItem> ConvertToScanItems(DataTable table) { ObservableCollection<ScanItem> result = new ObservableCollection<ScanItem>(); int index = 1; foreach (DataRow row in table.Rows) { result.Add(new ScanItem { Index = index++, PackID = row.Field<string>("PackID"), PackDate = row.Field<DateTime>("PackDate"), PackBarcode = row.Field<string>("PackBarcode") }); } return result; } public async void SaveScan(string packId, DateTime packDate, string barcode) { OracleDBHelper dbHelper = new OracleDBHelper(dbConnectString); var Inserparameters = new OracleParameter[] { new OracleParameter("PackID", packId), new OracleParameter("PackDate", packDate), new OracleParameter("PackBarcode", barcode) }; var Updateparameters = new OracleParameter[] { new OracleParameter("PackID", packId) }; try { int insertRows = await dbHelper.ExecuteNonQueryAsync(insertHistorySql, Inserparameters); loginfo.Info("History Insert Rows " + insertRows); int updatedRows = await dbHelper.ExecuteNonQueryAsync(updatePackInfoSql, Updateparameters); loginfo.Info("Packinfo update Rows " + updatedRows); } catch (Exception e) { loginfo.Info("Save Scan Info error!"); loginfo.Info(e.Message); } } } }
最新发布
09-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值