问题描述
- 数据库表的类型为varchar但是只能存入数字类型的字符串
-
我的客户表customer字段类型为varchar型的 ,但是我在插入数据时不能插入字母,符号,只能插入数字类型的字符串
比如插入 “lly.sfa”就不行,但是插入“54215642”就可以 。下面是我的代码
try
{
string username = TextBox1.Text;
string password = TextBox2.Text;
string againpassword = TextBox3.Text.;
string phonenumber = TextBox4.Text.();
Random ran = new Random();int id = Convert.ToInt32(string.Format("{0:ddHHmmss}", DateTime.Now) + ran.Next(0, 10));
string sqlselete = "select count(*) from customer where customer_name=" + username;
dataOperate sqlopereat = new dataOperate();
int num = sqlopereat.IsData(sqlselete);
if (num == 0)
{
try
{
string sqlupdata = "insert into customer(customer_id,customer_name,customer_password,customer_phone,customer_level) values(" + id+"," + phonenumber+","+username+","+password+","+ "5) ";
//bool a=sqlopereat.Insert(sqlupdata);
//if (a==true)
//{
// Response.Write("恭喜 注册成功");
//}
bool result = sqlopereat.AdlData(sqlupdata);
if (result == true)
{
Response.Write("恭喜 注册成功");
}} catch (Exception) { throw; } } } catch (Exception) { throw; } } 数据库连接没有问题 我用的是VS2015内置的数据库 是这个的问题吗?
解决方案
你的sql语句中拼接,字符串类型的变量外面要加上单引号。
解决方案二:
字符串的列名称的值要用引号扩起。。要不会报错了。。
string sqlselete = "select count(*) from customer where customer_name='" + username+"'";////////////
dataOperate sqlopereat = new dataOperate();
int num = sqlopereat.IsData(sqlselete);
if (num == 0)
{
try
{
string sqlupdata = "insert into customer(customer_id,customer_name,customer_password,customer_phone,customer_level) values(" + id + ",'" + phonenumber + "','" + username + "','" + password + "'," + "5) ";/////////
解决方案三:
给字符串外面加一个单引号就好
解决方案四:
是不是,把他强制转换了INT32
解决方案五:
username外添加单引号
解决方案六:
这种问题,首先肯定,sql 语句的拼接有问题,针对问题下药,这是重中之重。
那什么方法最直接呢,不是问,也不是看,而是 你要调试,
首先,你会调试吗,不会,去网上查一下,一会就会了
OK ,接下来你就 在你 执行语句之前设置个断点,,(断点你总会吧)
F5 调试,运行到断点 把你的SQL 语句 复制出来,,然后往 SQL 那边粘贴下
最后,你在sql 运行下,就能看到智能提示了,这是最直观的办法,问题解决了
解决方案七:
字符串:怎样转换字符串为数字类型?