小编sst*_*tan的帖子

SQL注入单引号漏洞

你好,我正在测试我正在研究的网站.一些开发人员试图通过用双引号替换每个引号来避免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上运行.

c# sql sql-server sql-injection code-injection

4
推荐指数
1
解决办法
1624
查看次数

防止 SQL 文件作为脚本运行

我有数十个 SQL 文件,其中包含单独的查询和更新命令。这些命令旨在用作手动更新数据库的起点,它们的结构不适合作为脚本运行。

我可以在这些文件的开头放置一个 SQL 命令来阻止无意中单击“运行脚本”按钮吗?返回,停止,停止?

我在 Oracle 的 SQL Developer 中打开它们,“运行命令”和“运行脚本”按钮彼此相邻......

sql oracle oracle-sqldeveloper

4
推荐指数
1
解决办法
381
查看次数

SQL select语句结合不同的表

说我有三个表: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 …

sql sybase-ase

3
推荐指数
1
解决办法
347
查看次数

ORACLE SQL:如何在Pivot函数中将NULL替换为0

如何在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)

sql oracle pivot null-coalescing

3
推荐指数
1
解决办法
1万
查看次数

使用Linq对抗EF过滤器在numberic字段上为null

在数据库中,对于作为数字的字段,您可以为NULL.当我把该表为通过EF我的项目,把一个空检查该列在where子句中它给了我信息说这将永远是真实的,你不能在一个十进制检查null作为它永远不会等于空.然而,这在直接sql中是有效的.如何通过EF检查数据库中数字列的空值,这只是EF和数据库之间的误解?

caluse的例子:

&& l.latitude != null && l.longitude != null
Run Code Online (Sandbox Code Playgroud)

纬度和经度在进入EF时是小数,但在数据库中它们可以为NULL,我想过滤掉它们

.net c# entity-framework

3
推荐指数
1
解决办法
70
查看次数

什么是ojdbc6.jar文件?

对于学校项目,我必须使用数据库来编写Java程序,为此,我必须将ojdbc6.jar导入到该项目文件中。我知道没有它我将无法使用数据库,但我真的不知道这个文件是什么。有人可以解释吗?此类文件的调用方式和用途是什么?

java oracle jar jdbc ojdbc

2
推荐指数
1
解决办法
1万
查看次数

大数据集的分页

我有一个返回大(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行.我怎样才能有效地做到这一点?

sql oracle pagination

1
推荐指数
1
解决办法
517
查看次数

如何减少SQL数据库的自增数?

目前表结构是这样的:

user_preference
---------------
id
user_id
pref_id
Run Code Online (Sandbox Code Playgroud)

该表存储所有用户选项,id为auto -inc

问题是:

1)是否有必要为每张桌子保留一个ID?为每个表保留系统生成的 id 似乎是常见的做法

2)每当用户更新他们的偏好时,我会为他清除所有相关记录并插入更新的记录,之后自动增量数会变得很大。我怎样才能防止这种情况发生?

谢谢你的帮助。

mysql database database-design

1
推荐指数
1
解决办法
3516
查看次数

DateTime.ParseExact与非标准时区字符串的问题

我正在谈论以这种格式给我回复日期的网络服务
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

c# datetime parsing

1
推荐指数
1
解决办法
390
查看次数

c#创建没有像VB.net这样的代理的事件

我在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)

.net c# vb.net

1
推荐指数
1
解决办法
710
查看次数

使用结构作为参数

我需要定义一个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上面所述的十进制值的话,我会做同样的事情.

.net c#

-1
推荐指数
1
解决办法
108
查看次数