SQL Server 把'作为关键字...要insert到'时,需要转换为两个'':参考方法://把单引号转换为双引号 public static string encode2sql(string text)
{
string temp_text=text;
//int i=text.IndexOf("'",0);
if(text.IndexOf("'",0)!=-1)
{
temp_text=text.Replace("'","''");
}
return temp_text;
}
{
string temp_text=text;
//int i=text.IndexOf("'",0);
if(text.IndexOf("'",0)!=-1)
{
temp_text=text.Replace("'","''");
}
return temp_text;
}
brightheroes(闭关|亨利就这样黯然告别欧洲杯....) 呵呵...老兄见笑啦...最近看球...好困,基本没有来的
SqlCommand _comm = new SqlCommand ( "select * from Table where Name = @Name", _conn );
SqlTransaction _tran = _conn.BeginTransaction();
_comm.Transaction = _tran;_comm.Parameters.Add( "@Name", SqlDbType.VarChar, 50 ).Value = "';delete table"; // 随便什么都可以
try
{
_comm.ExecuteScalar();
_tran.Commit();
}
catch()
{
_tran.Rollback();
}
_conn.Close();习惯tran
SET QUOTED_IDENTIFIER OFF
一般的SQL语句,都应有这样的处理
{
str=str.Replace("<","<");
str=str.Replace(">",">");
str=str.Replace("'","''");
......
return str;
}
写一个方法把常用的都给换了。
OleDb
INSERT INTO TB_FilmFile (FilmName) VALUES ?
易懂实用.
还是用参数啦 正规的解法
另一种方法
把单引号 换为 cha(30) 即可
但是要注意SQL Server 中这个函数是 cha(),Access中这个函数是 chr().其他的数据库我没有试用过.
30 是单引号的ASCII 码同理可以用这个函数输入任何的 ASCII字符数据库服务会自动转换的 我们读出来的时候就不用再换回去了。
2、若直接使用SQL语句,无法将单引号插入,只能限制用户输入字符串数据中不能包含单引号。