繁体   English   中英

从C#查询SQL Server数据库

[英]Query SQL Server database from C#

我正在尝试查询数据库,并使用用户传递到我的Web API上的get请求的数据来获取数据库以返回正确的数据。

我试过使用:

SqlConnection con = new SqlConnection(conString);
con.Open();

if (con.State == System.Data.ConnectionState.Open)
{
    SqlCommand cmd = new SqlCommand();
}

但是,我不确定命令中需要放置什么。 我是否只写这样的东西:

WHERE forename, surname, caseid, postcode, telephone, email FROM TestDB.crm-data 

还是我弄错了?

这是完整的代码,抱歉

public string Get(string forename, string surname, int? caseid, int? loanid, string postcode, string telephone, string email, string title)
{
    SqlConnection con = new SqlConnection(conString);
    con.Open();

    if (con.State == System.Data.ConnectionState.Open)
    {
        SqlCommand cmd = new SqlCommand("SELECT * FROM crm-base WHERE forename");
    }
}

这不是完美的,但是您就可以了。 您已经完成了其中的一部分:

using(SqlConnection con = new SqlConnection(conString))
{
    con.Open();

    var query=@"Select forename, surname, caseid, postcode, telephone, email 
                FROM TestDB.crm-data WHERE caseid=@caseId OR email=@email";

    using(SqlCommand cmd = new SqlCommand(query, con))
    {
        cmd.Parameters.Add("@caseid",SqlDbType.Int).Value=1234;
        cmd.Parameters.Add("@email", SqlDbType.VarChar, 250).Value="user@example.com";
        var dtb=new DataTable();
        var da=new SqlDataAdapter(com);
        da.Fill(dtb)
        //NOW dtb CONTAINS RECORDS FROM YOUR QUERY
    }
}

如果查询具有常量参数,则可以使用原始查询。 但是,如果要传递不同的参数值(在where子句中),请使用SQLParameters。 这些是为防止SQL注入攻击而构建的。

查看此链接以获取一些示例。

http://csharp-station.com/Tutorial/AdoDotNet/Lesson06

您的查询不完整。 您添加了where子句,但未指定条件。

您需要执行与此类似的操作;

SqlCommand cmd = new SqlCommand($"SELECT * FROM crm-base WHERE forename='{forename}');

这将获取所有名称与传递给get方法的记录相同的记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM