c# - 输入流格式不正确

标签 c# sql

我在这一行中遇到错误 account = int.Parse(cmd.ExecuteScalar().ToString());//错误 每次我试图运行这个程序。它给了我同样的错误。帐号是一个整数,值来自文本框 1。帐户持有人姓名来自文本框 2。这是一个 SQL 事务方法。当我点击按钮时,我希望增加余额或减少余额。这就是我想要做的事情。我不是很专家,我正在努力学习。请重播我,以便我可以更正此错误。Thnaks

Here is my C# code . But when i run this application its shows following errors.Input stream not in correct format


        namespace BANKINHNTIRE1
        {
            public partial class Form3 : Form
            {
                public Form3()
                {
                    InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)

            {
                int account = System.Convert.ToInt32(textBox1.Text);
                string sql = "select statementamount from ACCOUNT WHERE Account_Number ='" + textBox1.Text + "'";

                SqlConnection cn = new SqlConnection(@"Data Source=KHUNDOKARNIRJOR\KHUNDOKERNIRJOR;Initial Catalog=Login;Integrated Security=True");
                SqlCommand cmd = new SqlCommand(sql, cn);
                cn.Open();
               account = int.Parse(cmd.ExecuteScalar().ToString());

                if (account > 0)
                {
                    int j;

                    SqlTransaction trans;
                    SqlCommand cmd1 = new SqlCommand();
                    trans = cn.BeginTransaction();
                    cmd1.Connection = cn;
                    cmd1.Transaction = trans;
                    cmd1.CommandType = CommandType.Text;

                    cmd1.CommandText = "update ACCOUNT set statementamount=statementamount+'" + textBox3.Text + "' where Account_Number ='" + textBox1.Text + "'  and First_Name='" + textBox2.Text + "'";

                    j = cmd1.ExecuteNonQuery();
                    if (j == 1)
                    {
                        trans.Commit();
                        MessageBox.Show("credited...");

                    }
                    else
                        trans.Rollback();


                }
                else
                {
                    MessageBox.Show("u can't make credit...");
                }

            }
        }
    }

最佳答案

我要检查的第一是为什么你试图用转换一个statementamount(几乎肯定是一个 float 值) >int.parse().

尽管它不是一个帐号,但您也将其放入变量 account 中,所以它可能是您我错误地将 accountamount 混为一谈,在这种情况下,它可能更好:

double amount = Double.Parse(cmd.ExecuteScalar().ToString());
if (amount > 0) ...

在任何情况下,如果您可以从中恢复,您确实应该捕获异常,这当然是您可以这样做的情况(例如,通过设置一个错误对话框,然后不再尝试进一步处理事务) .


除此之外,您可以将语句分解为多个组件,以便您可以更具体地确定问题发生的位置:

object obj = cmd.ExecuteScalar();
string str = obj.ToString();
account = int.Parse(str);

单步执行并检查变量应该可以弄清楚实际问题是什么。

关于c# - 输入流格式不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33662699/

相关文章:

mysql - 检查仓库中的元素是否已移出、留下或是新的。基于两个变量

mysql - 错误: No unique index found for the referenced field of the primary table

c# - 如何在 C# 中的 Google Sheets API v4 中格式化标题行?

c# - Emgu CV - 我如何获得图像中所有模式的出现

c# - 如何在 .NET Core 3.1.1 中将 json 更改为 CamelCase?

sql - 需要制作一个 .bat 文件来停止然后重新启动 SQL Server 数据库

php - 在 SQL 中存储笛卡尔积结果?

sql - 查询以某物开头和结尾的字符串的性能

c# - 如何在WPF中使用动画使文本 block 向上移动( float )

c# - EntityFramework Core 与复合键的关系