我在这一行中遇到错误 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
中,所以它可能是您我错误地将 account
和 amount
混为一谈,在这种情况下,它可能更好:
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/