#c# #database #winforms #ms-access #textbox
#c# #База данных #winforms #ms-access #текстовое поле
Вопрос:
Я работаю над своей собственной POS-системой и использую этот код, чтобы попытаться заставить приложение редактировать «количество» товара. Что я сделал, так это то, что у меня появилась панель поиска, где я могу выполнить поиск по идентификатору штрих-кода, и данные отобразятся в текстовом поле. (Т.е. Исходное количество будет отображаться в TextBox1. Я бы получил это текстовое поле.Текст «1» [Я не собираюсь вдаваться здесь в подробности, но это работает, пожалуйста, прокомментируйте, если вам действительно нужен код]). Теперь я хочу связать и отредактировать данные с базой данных Access и вставить результат из второго текстового поля (с исходным текстовым полем 1) Вот ошибка: Изображение ошибки
Вот код:
using System.Data.OleDb;
using System.Drawing.Printing;
using System.IO;
using System.Drawing.Imaging;
namespace TestBarcode
{
public partial class POS : Form
{
private OleDbConnection connection = new OleDbConnection();
public POS()
{
InitializeComponent();
connection.ConnectionString=@"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:POSDatabaseMainDatabase_POS.accdb;
Persist Security Info=False;";
}
private void POS_Load(object sender, EventArgs e)
{
this.inventoryManagementTableAdapter.Fill(this.mainDatabase_POSDataSet.InventoryManagement);
checkBox1.Show();
checkBox2.Hide();
try
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
string query = "select * from InventoryManagement";
command.CommandText = query;
OleDbDataAdapter da = new OleDbDataAdapter(command);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error" ex);
}
}
try
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
//EditTextHere
string query = "UPDATE InventoryManagement set Số_Lượng_Trong_Kho='" textBox25.Text "',Mã_Số_Vạch='" textBox19.Text "',Mã_thợ='" textBox13.Text "',Kiểu='" textBox14.Text "',Size_Giày='" textBox15.Text "',Màu='" textBox16.Text "',Giá='" textBox17.Text "'where ID=" textBox24.Text "";
command.CommandText = query;
command.ExecuteNonQuery();
MessageBox.Show(query);
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error" ex);
}
PS: (1) Игнорируйте вьетнамский текст, вы можете заменить эти слова чем угодно, если хотите.
(2) Извините, я немного напортачил с текстовым полем, поэтому имя текстового поля является случайным и его очень трудно понять.
Есть ли способ добиться этого? Если да, пожалуйста, помогите. Спасибо.
Комментарии:
1. Когда вы заключаете переменную в одинарные кавычки, как вы делаете в команде Update, то это передается вашему движку database engine в виде строки. Если движок ожидает чего-то другого, он может попытаться преобразовать вашу «строку» в ожидаемое значение. Иногда это работает, иногда нет. Начните использовать параметры и точно укажите свои типы данных.
2. Будет ли это работать, если я выберу datarow, а затем укажу, какой это datarow, а затем отредактирую выбранный мной? Вот так: foreach (DataRow db в dt.Rows) { ,,,,,, } Будет ли это работать?
Ответ №1:
Кажется, вы передаете параметры неправильного типа данных. Пожалуйста, проверьте типы данных значений, передаваемых из текстовых полей и столбцов таблицы базы данных. Я уверен, что будет какое-то несоответствие.