TextBox输入控制与Oracle数据类型的问题
来源:互联网 发布:淘宝怎么货到付款 编辑:程序博客网 时间:2024/06/14 15:27
场景设置:写一个WinForm程序,假如某数据库表的字段为整数类型,而这个字段的值是从form窗体的TextBox输入。
要求是:TextBox只能输入整数,这个值在代码中用int变量存储,然后再存储到数据库。
这是我在项目中遇到的问题,问题说大可不大,但是还可能隐藏着很多bug:(1)数据库这个字段类型应该怎么设置?能保存输入的值能正确存储,不出现值太大或太小等异常。(2)从TextBox输入的值只能是数字,否则转化为int类型的时候会报异常,在实际情况中,假如TextBox输入的值太大同样会报异常,这个输入值的大小又如何根据实际情况做控制呢?
我的解决方法:
(1)我对数据库设计也不大熟悉,在此选用Oracle,参考Oracle的数据类型后,选用number(m,n)类型,C#中int类型范围为
-2,147,483,648 到 2,147,483,647,于是这个字段类型可以为number(10,0)。
(2)TextBox输入控制包括键盘输入和粘贴输入。
键盘输入的控制代码为:
private void txtSum_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar != 8 && !char.IsNumber(e.KeyChar))&&e.KeyChar!=13)
{
MessageBox.Show("商品数量只能输入数字","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
e.Handled = true;
}
}
粘贴输入控制和输入值检验:
private void txtSum_TextChanged(object sender, EventArgs e)
{
if (txtSum.Text == "")
{
return;
}
try
{
int nInput = int.Parse(txtSum.Text);
}
catch (FormatException)//输入字符格式错误异常处理
{
MessageBox.Show("请输入正确的数量", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
txtSum.Text = string.Empty;
}
catch (OverflowException)
{
MessageBox.Show("输入的数量过大", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
txtSum.Text = string.Empty;
}
}
或
private void txtSum_TextChanged(object sender, EventArgs e)
{
try
{
if (!Regex.IsMatch(txtSum.Text.Trim(), @"^[1-9]/d*$"))
{
this.txtSum.Text = string.Empty;
return;
}
int nInput = int.Parse(txtSum.Text);
}
catch (OverflowException)
{
MessageBox.Show("输入的数量过大", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
txtSum.Text = string.Empty;
}
}
(3)实际上TextBox控件增加以上对应的事件之后就可以对输入做到很好的控制了,但是如何类似要求的控件很多时输入不正确的时候老是弹出MessageBox,还有复制这个控件事件不会复制,会增加很多代码,下面我再对输入控制的方法做一些拓展。
(4)使用MaskedTextBox控件,因为最大int的位数有10位,在允许的情况下我们可以设置MaskedTextBox的Mask属性值为000000000,允许输入九位数字,这样既能保证只能输入数字又不会出现溢出的情况。
(5)假如使用的DevExpress系列的TextEdit控件,也可以设置mask和MaxLength,即选择原有的正则表达式或自己编写一个。这样通过属性来控制输入即可以大大减少代码,复制使用同样的控件的时候效率就提高了。
- TextBox输入控制与Oracle数据类型的问题
- 关于控制textbox的输入问题
- 控制textBox的输入数字长度与范围
- 控制TextBox框的输入字符
- TextBox输入控制代码
- Asp关于限制TextBox输入的问题
- js 控制textbox的显示与隐藏
- 控制TextBox只能输入数字
- 控制TextBox只能输入数字
- 有关TextBox中输入字符控制的一种解决办法
- C#的winform中控制TextBox中只能输入数字?
- 有关TextBox中输入字符控制的一种解决办法
- 有关TextBox中输入字符控制的一种解决办法
- 有关TextBox中输入字符控制的一种解决办法
- 控制TextBox控件只输入数字的解决办法
- 有关TextBox中输入字符控制的一种解决办法
- e.Handled 的应用,控制textBox所输入内容
- WPF附加属性控制TextBox的输入为金额格式
- 职场潇洒行走的十条金玉良言
- PB数据窗口datawindow的查询条件设置和执行
- 642-972 题库详解
- 如何安装windows 7,不需要光盘,自己去网上下哈!
- 百度凤巢计划,中华英才网有点烦
- TextBox输入控制与Oracle数据类型的问题
- Flex Tree节点的添加、删除
- SQL注入攻击的种类和防范手段
- 学习SQL语言的好地方
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(6): EscapeRegExChars 函数
- 将DataTable 存入数据库
- 2*n+1的数据中找出不成对的一个数据
- 甲骨文收购SUN公司案例分析
- "stdafx.cpp"编译引起的C2859、C1083、LNK2001错误