你好,我正在测试我正在研究的网站.一些开发人员试图通过用双引号替换每个引号来避免SQL注入.这是C#代码:
string sql =
@"SELECT *
FROM users
WHERE us_username = '$us'
AND us_password = '$pw'";
sql.Replace("$pw", txtPassword.Text.Replace("'","''"));
Run Code Online (Sandbox Code Playgroud)
有什么方法可以执行SQL注入攻击吗?我尝试了Unicode技巧,但它没有用.该数据库在SQL Server 2008R2上运行.
我有数十个 SQL 文件,其中包含单独的查询和更新命令。这些命令旨在用作手动更新数据库的起点,它们的结构不适合作为脚本运行。
我可以在这些文件的开头放置一个 SQL 命令来阻止无意中单击“运行脚本”按钮吗?返回,停止,停止?
我在 Oracle 的 SQL Developer 中打开它们,“运行命令”和“运行脚本”按钮彼此相邻......
说我有三个表:TableA,TableB,和TableC.每个表都有一列:ColA.
TableA是我的主表,TableA.ColA有一个价值.
我希望检查其中的一个TableB或者TableC也有一个ColA与我相对应的值TableA.ColA.
所以我的发言是:
select count(*)
from TableA, TableB, TableC
where ( TableA.ColA = TableB.ColA AND TableA.ColA = "ABC")
OR ( TableA.ColA = TableC.ColA AND TableA.ColA = "ABC" )
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
如果我TableB.ColA没有ColA值并且TableC.ColA有值,则返回的结果仍然是0.我应该算一算1.
我的select语句有什么问题?
我的TableA数据:
ColA
-----
ABC
Run Code Online (Sandbox Code Playgroud)
我的TableB数据:
ColA
----
NULL
Run Code Online (Sandbox Code Playgroud)
我的TableC数据:
ColA
----
ABC
Run Code Online (Sandbox Code Playgroud)
因为TableC.ColA并且TableA.ColA具有相同的值,它应该返回我的计数1.但事实并非如此.我的数据库是SAP …
如何在ORACLE SQL的PIVOT函数中将NULL替换为0?这是我要编写的查询:
SELECT *
FROM
(
SELECT DISTINCT
CUSTOMER_ID AS CUSTOMER_ID,
CASE
WHEN CATEGORY_CODE = '01' THEN 'CAT 01'
WHEN CATEGORY_CODE = '02' THEN 'CAT 02'
WHEN CATEGORY_CODE = '03' THEN 'CAT 03'
ELSE 'OTHER' END AS CATEGORY,
SUM(ORDERS) AS ORDERS
FROM
TABLE_01
GROUP BY
CUSTOMER_ID,
CASE
WHEN CATEGORY_CODE = '01' THEN 'CAT_01'
WHEN CATEGORY_CODE = '02' THEN 'CAT_02'
WHEN CATEGORY_CODE = '03' THEN 'CAT_03'
ELSE 'OTHER' END
)
PIVOT
(
SUM(ORDERS)
FOR CATEGORY IN
(
'CAT_01',
'CAT_02',
'CAT_03',
'OTHER' …Run Code Online (Sandbox Code Playgroud) 在数据库中,对于作为数字的字段,您可以为NULL.当我把该表为通过EF我的项目,把一个空检查该列在where子句中它给了我信息说这将永远是真实的,你不能在一个十进制检查null作为它永远不会等于空.然而,这在直接sql中是有效的.如何通过EF检查数据库中数字列的空值,这只是EF和数据库之间的误解?
caluse的例子:
&& l.latitude != null && l.longitude != null
Run Code Online (Sandbox Code Playgroud)
纬度和经度在进入EF时是小数,但在数据库中它们可以为NULL,我想过滤掉它们
对于学校项目,我必须使用数据库来编写Java程序,为此,我必须将ojdbc6.jar导入到该项目文件中。我知道没有它我将无法使用数据库,但我真的不知道这个文件是什么。有人可以解释吗?此类文件的调用方式和用途是什么?
我有一个返回大(10000+行)数据集的查询.我想按日期desc订购,并显示前40个结果.有没有办法运行这样的查询,只检索那40个结果而不首先检索所有10000?
我有这样的事情:
select rownum, date, * from table
order by date desc
Run Code Online (Sandbox Code Playgroud)
这将选择所有数据并按日期对其进行排序,但是rownum不按顺序排列,因此仅选择前40个是无用的.
ROW_NUMBER() over (ORDER BY date desc) AS rowNumber
Run Code Online (Sandbox Code Playgroud)
^将按顺序显示rownumber,但我不能在where子句中使用它,因为它是一个窗口函数.我可以运行这个:
select * from (select ROW_NUMBER() over (ORDER BY date desc) AS rowNumber,
rownum, * from table
order by date desc) where rowNumber between pageStart and pageEnd
Run Code Online (Sandbox Code Playgroud)
但这是选择所有10000行.我怎样才能有效地做到这一点?
目前表结构是这样的:
user_preference
---------------
id
user_id
pref_id
Run Code Online (Sandbox Code Playgroud)
该表存储所有用户选项,id为auto -inc
问题是:
1)是否有必要为每张桌子保留一个ID?为每个表保留系统生成的 id 似乎是常见的做法
2)每当用户更新他们的偏好时,我会为他清除所有相关记录并插入更新的记录,之后自动增量数会变得很大。我怎样才能防止这种情况发生?
谢谢你的帮助。
我正在谈论以这种格式给我回复日期的网络服务
Fri, 02 Oct 2009 05:33:11 - 0500
我一直在尝试将其解析为DateTimeC#并获得无效的字符串错误.
字符串未被识别为有效的DateTime
这是代码:
string text = "Fri, 02 Oct 2009 05:33:11 - 0500";
DateTime date = DateTime.ParseExact(text,"ddd, dd MMM yyyy h:mm:ss - zzzzz", null);
Run Code Online (Sandbox Code Playgroud)
如果我从参数中删除 - 0500和 ,它可以正常工作.不知道我在时区上做错了什么.任何方向将不胜感激.我已经尝试了不同的"z"计数并删除了" - "也假设它让人感到困惑.- zzzzParseExact
我在VB.net中的代码
Public Class Form1
'step 1. declare the event
Private Event TestEvent(ByVal msg As String)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'step 2. raise the event
RaiseEvent TestEvent("Hello World")
End Sub
Private Sub Form1_load()
'step 3. add the event handler
AddHandler Me.TestEvent, AddressOf test_handler
Sub
Private Sub test_handler(ByVal message As String)
MsgBox(message)
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
我的C#代码
namespace CSharp_Event_Test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//step 1. declare delegate …Run Code Online (Sandbox Code Playgroud) 我需要定义一个enum带小数值,但由于这是不可能的,我已经阅读了使用的解决方案struct,所以我有以下内容:
public struct r_type
{
public const double c001_a1 = 0.1;
public const double c001_a2 = 0.2;
public const double c001_a4 = 0.4;
public const double c001_a8 = 0.8;
}
Run Code Online (Sandbox Code Playgroud)
我试图将其称为函数中的参数,如下所示:
public static void SetRValue(string product_id, r_type r)
Run Code Online (Sandbox Code Playgroud)
但是在我的代码中调用它时会出错:
SetRValue(product.id, r_type.c001_a1);
Run Code Online (Sandbox Code Playgroud)
错误是:
错误5参数2:无法从'double'转换为'myproject.class1.r_type'
编辑:我需要我的r参数只能接受给定范围的值,而不是任何double值.如果我能拥有一个enum可以接受我struct上面所述的十进制值的话,我会做同样的事情.