-1

在我当前的vb.net (visual studio 2010) 项目中,我正在处理SQL Server CE数据库。
为了存储手机号码,我将nvarchar数据类型用于Mobile_no字段。

在测试时,我已成功在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

4

1 回答 1

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的任何可能性。

于 2013-08-10T17:27:19.677 回答