用于存储10位移动电话号码的数据类型?

时间:2013-08-10 16:04:11

标签: vb.net sql-server-ce

在我目前的 vb.net (visual studio 2010)项目中,我正在处理 SQL Server CE 数据库。
对于存储移动电话号码,我使用移动号码字段的 nvarchar 数据类型。

在测试时,我已成功在 Mobile_no 字段中输入 1234567890 ..

  

但在检索时我收到了这个错误:
  表达式评估导致溢出。 [功能名称(如果已知)=]

那么我应该怎么做才能在sql ce数据库中存储手机号码?

编辑:
插入代码:

Dim SQLquery As String
Dim enumber As String
enumber = 1234567890
insqertSql = "INSERT INTO tbl_cust(c_id,Mobile_no) VALUES(@CId, @Phno)"
            Dim cmd As New SqlCeCommand(insqertSql, con)
            cmd.Parameters.Add("@CId", c_id)
            cmd.Parameters.Add("@Phno", enumber)
            cmd.ExecuteNonQuery()  


    查询检索:

  

SQLquery =“SELECT * FROM tbl_cust WHERE ePhone =”& txt_number.text

1 个答案:

答案 0 :(得分:1)

问题在于检索查询中的字符串连接。

SQLquery = "SELECT * FROM tbl_cust WHERE ePhone =" & txt_number.text

在这里,您将错过在用作WHERE条件时应包含字符串值的单引号。 但是,在INSERT查询中,您使用参数化方法,为什么不对选择使用相同的方法?

SQLquery = "SELECT * FROM tbl_cust WHERE ePhone = @number"
Dim cmd As New SqlCeCommand(SQLquery, con)
cmd.Parameters.Add("@number", txt_Number.Text)
SqlCeDataReader reader = cmd.ExecuteReader()  
........

如果使用参数化查询,则正确处理字符串引号,十进制数和日期格式将传递给底层框架代码,该代码比您和我更了解如何将这些值传递给数据库引擎。此外,参数化查询会删除Sql Injection的任何可能性。