gpt4 book ai didi

c# - 无法从字符串转换为 int32

转载 作者:太空狗 更新时间:2023-10-29 23:23:20 26 4
gpt4 key购买 nike

我遇到了一个问题,我只能从单个文本框中的数据库中检索数据。我想要的是,我想从数据库中检索每个文本框的数据,但是当我尝试时,出现错误:

代码如下:

string connectionString = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\Archives\Projects\Program\Sell System\Sell System\App_Data\db1.accdb;Persist Security Info=False;");

private List<List<TextBox>> textBoxCodeContainer = new List<List<TextBox>>();
private List<List<TextBox>> textBoxQuantityContainer = new List<List<TextBox>>();
private List<List<TextBox>> textBoxDescContainer = new List<List<TextBox>>();
private List<List<TextBox>> textBoxSubTotalContainer = new List<List<TextBox>>();
private List<List<TextBox>> textBoxTotalContainer = new List<List<TextBox>>();

private void Form1_Load(object sender, EventArgs e)
{
UpdateTextPosition();

OleDbDataReader dReader;
OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT [Code] FROM [Data]", conn);

dReader = cmd.ExecuteReader();

AutoCompleteStringCollection codesCollection = new AutoCompleteStringCollection();

while (dReader.Read())
{
string numString = dReader[0].ToString().PadLeft(4, '0');
codesCollection.Add(numString);
}

dReader.Close();
conn.Close();
}

private void UpdateDatas()
{
OleDbDataReader dReader;
OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT DISTINCT [Description], [Price] FROM [Data] WHERE [Code]=@Code", conn);

cmd.Parameters.Add("Code", System.Data.OleDb.OleDbType.Integer);
cmd.Parameters["Code"].Value = this.textBoxCodeContainer[0][0].Text;

dReader = cmd.ExecuteReader();

while (dReader.Read())
{
this.textBoxDescContainer[0][0].Text = dReader["Description"].ToString();
this.textBoxSubTotalContainer[0][0].Text = dReader["Price"].ToString();
}

dReader.Close();
conn.Close();
}

我已经尝试添加:

cmd.Parameters.Add("Code", System.Data.OleDb.OleDbType.Integer);
cmd.Parameters["Code"].Value = this.textBoxCodeContainer[0][1].Text;

while (dReader.Read())
{
this.textBoxDescContainer[0][1].Text = dReader["Description"].ToString();
this.textBoxSubTotalContainer[0][1].Text = dReader["Price"].ToString();
}

但我收到一个错误消息:“无法将参数值从字符串转换为 int32”

最佳答案

试试这个

您必须将string 解析为Int32 数据类型

cmd.Parameters.Add("Code", System.Data.OleDb.OleDbType.Integer);
cmd.Parameters["Code"].Value =int.Parse(this.textBoxCodeContainer[0][1].Text);

如果用户输入一个有效的整数,这应该可以工作

例如

int Val=int.Parse("45");//Works for me

注意:这不适用于十进制值

或者,如果您的 Price 值包含 Decimal,您可以做的是

cmd.Parameters["Code"].Value = Convert.ToInt32(Convert.ToDouble(this.textBoxCodeContainer[0][1].Text));

这应该可行

关于c# - 无法从字符串转换为 int32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18267212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com