在早上帖子里的
public int ExecuteSQL(String SqlString)
{
int count = -1;
Open();
try
{
SqlCommand cmd = new SqlCommand(SqlString, conn);
count = cmd.ExecuteNonQuery(); //执行SQL语句
}
catch
{
count = -1;
}
finally
{
Close();
}
return count;
}
当我输入的登录名为数字的时候不会出错,要是输入zl4460072 catch就会报错
报错提示: 在此上下文中不允许使用 'zl4460072'。此处只允许使用常量、表达式或变量。不允许使用列名。
饿·· 不知道怎么该
public int ExecuteSQL(String SqlString)
{
int count = -1;
Open();
try
{
SqlCommand cmd = new SqlCommand(SqlString, conn);
count = cmd.ExecuteNonQuery(); //执行SQL语句
}
catch
{
count = -1;
}
finally
{
Close();
}
return count;
}
当我输入的登录名为数字的时候不会出错,要是输入zl4460072 catch就会报错
报错提示: 在此上下文中不允许使用 'zl4460072'。此处只允许使用常量、表达式或变量。不允许使用列名。
饿·· 不知道怎么该
解决方案 »
- 【请教】两个listbox互相联动
- 关于Entity Framework的问题
- sql查询
- 怎么样能把一个类文件编译成一个自定义的控件?
- 有分贴加分-如何显示这样的页面?
- 求一简单问题!
- LINQ to SQL:数据库插入记录出现问题!!!
- 如何将一按钮定会在屏幕左下角开始菜单的上面?将另一按钮定位在右上角?我不会写代码. :(
- 静态空间里,如何让页面留言直接提交到邮箱?
- 如何安装VSS? 我下了VS.NET七张盘,可以怎么也找不到VSS,请高手指点安装方法!!
- js的一个问题 急急急急!
- 函数调用问题 getCheckedMsgID(Repeater MyRpt, CheckBox myCkbox, HiddenField MyHMsgID)
肯定是你这里错了
设置user表字段LoginName的数据类型为varchar(255)
你Email什么的值都不加单引号??
SqlString "Insert into [User] (Email,Address,UserName,HomePage,LoginName,PassWord) Values('1','1','1','1','zl4460072','1')"
[UserID] [int] IDENTITY (1, 1) NOT NULL ,
[LoginName] [varchar] (50) NOT NULL ,
[UserName] [varchar] (50) NOT NULL ,
[Password] [varchar] (50) NOT NULL ,
[Address] [varchar] (100) NULL ,
[Homepage] [varchar] (50) NULL ,
[Email] [varchar] (50) NULL
)
改成
"Insert into [User] (Email,Address,UserName,HomePage,LoginName,PassWord) Values(1,1,1,1,‘zl4460072’,1)"
在此上下文中不允许使用名称 "cdee2"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
应该是数据库中 LoginName类型 不是varchar、char、nvarchar之类的吧
public bool Insert(String TableName, Hashtable Cols)
{
int Count = 0; if (Cols.Count <= 0)
{
return true;
} String Fields = " (";
String Values = " Values(";
foreach (DictionaryEntry item in Cols)
{
if (Count != 0)
{
Fields += ",";
Values += ",";
}
Fields += item.Key.ToString();
Values += item.Value.ToString();
Count++;
}
Fields += ")";
Values += ")"; String SqlString = "Insert into " + TableName + Fields + Values; return Convert.ToBoolean(ExecuteSQL(SqlString));
}
怎么加上单引号阿
还有SQLSTRING 中的VALUES里面有个明显的错误 Values(1,1,1,1,'zl4460072',1)'zl4460072'是字符串 所以您必须用单引号加以转换
在这个方法里的饿
public bool Insert(String TableName, Hashtable Cols)
{
int Count = 0; if (Cols.Count <= 0)
{
return true;
} String Fields = " (";
String Values = " Values(";
foreach (DictionaryEntry item in Cols)
{
if (Count != 0)
{
Fields += ",";
Values += ",";
}
Fields += item.Key.ToString();
Values += item.Value.ToString();
Count++;
}
Fields += ")";
Values += ")"; String SqlString = "Insert into " + TableName + Fields + Values; return Convert.ToBoolean(ExecuteSQL(SqlString));
}
怎么加上单引号阿
{
int Count = 0; if (Cols.Count <= 0)
{
return true;
} String Fields = " (";
String Values = " Values('";
foreach (DictionaryEntry item in Cols)
{
if (Count != 0)
{
Fields += ",";
Values += "',";
}
Fields += item.Key.ToString();
Values += item.Value.ToString();
Count++;
}
Fields += ")";
Values += ")"; String SqlString = "Insert into " + TableName + Fields + Values; return Convert.ToBoolean(ExecuteSQL(SqlString));
}试试
Values +="'"+ item.Value.ToString()+"'";
这两个改了应该就可以了
只要Values +="'"+ item.Value.ToString()+"'";
上面一句就不要了
在SQLSTRING里直接加就行了
如果是变量 请参考下面int i=0;
string x="1234";value("+i+",'"+x+"'); 请注意看 数据类型不同,加单引号的技巧也不同。
int i =1;
string str ="123";
因为在Sql中,加单引号的,表示是字符串
不加单引号的,以数字开头表示是数字,以其它字符开头表示是字段、表名、关键字……
如果是Oracle,那么允许你通通加上单引号,完全没有问题;
但是SqlServer或Access
不允许数值型加上单引号
谁说SQL里数值不可以加单引号的
你试过不可以吗
SQL2000以后会自动转换的好不好
public bool Insert(String TableName, Hashtable Cols)
{
int Count = 0; if (Cols.Count <= 0)
{
return true;
} String Fields = " (";
String Values = " Values('";
foreach (DictionaryEntry item in Cols)
{
if (Count != 0)
{
Fields += ",";
Values += "',";
}
Fields += item.Key.ToString();
Values += item.Value.ToString();
Count++;
}
Fields += ")";
Values += "')"; String SqlString = "Insert into " + TableName + Fields + Values; return Convert.ToBoolean(ExecuteSQL(SqlString));
}
就可以了
不过可以肯定的是Access不行,而Oracle可以但是我在Oracle里,也尽量不用单引号的