如我原来的程序对传参是这样的String sql = @"SELECT CardName FROM MyTab WHERE CardCode = #CardCode";
oo.DbOperator.Parameters.Add(Parameter.Sql("@CardCode", ParameterDbType.VarChar, 4, CardCode));
reVal = oo.DbOperator.ExecScalar(sql).ToString();但现在我的这个MyTab表是别一个数据库的表
然后程序如下String DbServer = "OPENROWSET('SQLOLEDB', '" + info.DB_Server + "'; '" + info.DB_User + "'; '" + info.DB_Pass + "', " + info.DB_Name + ".dbo.";
String sql = @"SELECT CardName FROM " + DbServer + "MyTab WHERE CardCode = @CardCode";
oo.DbOperator.Parameters.Add(Parameter.Sql("@CardCode", ParameterDbType.VarChar, 4, CardCode));
reVal = oo.DbOperator.ExecScalar(sql).ToString();但是这样的话,如果在Dbserver被写了SQL语入的语句的话这里会被注入
那能不能改为String sql = @"SELECT CardName FROM @MyTab WHERE CardCode = @CardCode";
oo.DbOperator.Parameters.Add(Parameter.Sql("@MyTab", ParameterDbType.VarChar, 500, "OPENROWSET('SQLOLEDB', '" + info.DB_Server + "'; '" + info.DB_User + "'; '" + info.DB_Pass + "', " + info.DB_Name + ".dbo."));
oo.DbOperator.Parameters.Add(Parameter.Sql("@CardCode", ParameterDbType.VarChar, 4, CardCode));
reVal = oo.DbOperator.ExecScalar(sql).ToString();
谢谢也就是说“表名”,“远程数据库链接”
能否用参数型式来防止被注入谢谢
oo.DbOperator.Parameters.Add(Parameter.Sql("@CardCode", ParameterDbType.VarChar, 4, CardCode));
reVal = oo.DbOperator.ExecScalar(sql).ToString();但现在我的这个MyTab表是别一个数据库的表
然后程序如下String DbServer = "OPENROWSET('SQLOLEDB', '" + info.DB_Server + "'; '" + info.DB_User + "'; '" + info.DB_Pass + "', " + info.DB_Name + ".dbo.";
String sql = @"SELECT CardName FROM " + DbServer + "MyTab WHERE CardCode = @CardCode";
oo.DbOperator.Parameters.Add(Parameter.Sql("@CardCode", ParameterDbType.VarChar, 4, CardCode));
reVal = oo.DbOperator.ExecScalar(sql).ToString();但是这样的话,如果在Dbserver被写了SQL语入的语句的话这里会被注入
那能不能改为String sql = @"SELECT CardName FROM @MyTab WHERE CardCode = @CardCode";
oo.DbOperator.Parameters.Add(Parameter.Sql("@MyTab", ParameterDbType.VarChar, 500, "OPENROWSET('SQLOLEDB', '" + info.DB_Server + "'; '" + info.DB_User + "'; '" + info.DB_Pass + "', " + info.DB_Name + ".dbo."));
oo.DbOperator.Parameters.Add(Parameter.Sql("@CardCode", ParameterDbType.VarChar, 4, CardCode));
reVal = oo.DbOperator.ExecScalar(sql).ToString();
谢谢也就是说“表名”,“远程数据库链接”
能否用参数型式来防止被注入谢谢
解决方案 »
- ASP.Net 海量数据导出到EXCEL (求救,问题很老,但是很急)
- 当页面比较大时 如何实现只加载 上面的内容,当滚动条滚动时 才动态加载出下面的内容
- 像QQ相册上传功能图片
- 有安装过 vs2008.net 么,请帮忙看看.
- .net ExecuteScalar()返回值处理问题
- 先谢谢了!再说! 没遇到过的两个控件的用法
- 我用localhost可以访问自己的网站,用IP地址代替LOCALHOST却不行,为什么?
- 关于datagrid的问题
- 小菜一碟:DataGrid
- 在ASP.NET中如何能使Repeater实现像DataGrid一样的分页功能?
- [急急急]如何实现网站访问空间数据库
- 关于asp.net中的登陆验证模块
SQL Server 2008中的T-SQL功能新增了表值参数。
利用这个新增特性,我们可以很方便的将一个表作为参数传给存储过程。
具体参考:http://msdn.microsoft.com/zh-cn/bb675163.aspx