当前位置: 首页 > 知识库问答 >
问题:

创建SqL命令的正确方法C#

狄心水
2023-03-14

我想了3种方法来创建一个命令并执行它。

  1. 每个命令都有不同方法。IE:
public bool UserisExist(string username, string password)
        {
            using (SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\...\Database.mdf;Integrated Security=True"))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.CommandText = "select Count(*)from UsersTable where Name='" + username + "' AND Password ='" + password + "'";
                    cmd.Connection = connection;

                    connection.Open();
                    int x = Convert.ToInt32(cmd.ExecuteScalar());
                    connection.Close();

                    UserManager.ClientID = GetClientID(username);
                    return (x > 0);
                }
            }

        }


        
        public int GetClientID(string username)
        {
            using (SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\...\Database.mdf;Integrated Security=True"))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    try
                    {
                        cmd.CommandText = "Select UserID from UserInfoTable Where UserName ='" + username + "'";
                        cmd.Connection = connection;
                        connection.Open();
                        rdr = cmd.ExecuteReader();
                        if (rdr.HasRows)
                        {
                            rdr.Read(); // read first row
                            var userId = rdr.GetInt32(0);
                            return userId;
                        }
                        else
                            return -1;
                    }
                    catch
                    {
                        return -1;
                    }
                }
            }


        }
 public bool ExecuteScalarScalar(string command)
        {
            using (SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\...\ Security=True"))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.CommandText = command;
                    cmd.Connection = connection;
                    connection.Open();
                    int x = Convert.ToInt32(cmd.ExecuteScalar());
                    return (x > 0);
                }
            }
        }

或者3)像第二个but一样,方法作为参数but接收,拆分为

(string tableName,string conditionColumn,string conditionValue,string columnToGet)

这样做的正确方法是什么?由于某种原因,第三个看起来不对,但我不知道为什么。

共有1个答案

漆雕升
2023-03-14

首先,您应该使用参数来避免SQL注入。我可以推荐您使用以下模式来执行Sql查询:

var username = "testUser";
var password = "1234";

using (var con = new SqlConnection("ConString"))
{
  con.Open();
  using (var cmd = con.CreateCommand())
  {
    cmd.CommandText = "select Count(*)from UsersTable where Name = @username AND Password = @password";
    cmd.Parameters.Add(new SqlParameter("@username", username));
    cmd.Parameters.Add(new SqlParameter("@password", password));

    int count = (int)cmd.ExecuteScalar();
  }
}

它易于阅读,您可以重用command对象,并且在需要的时候打开所有的东西,在不再需要的时候关闭所有的东西。

 类似资料:
  • 问题内容: 相当基本的sql命令。只想从我正在遍历的不同表中获取计数。但是,如果我更改sqlCommand并添加“;” 最后我得到异常,SQL命令未正确结束。 我很好奇为什么分号会引发此异常,因为命令应该以“;”结尾 问题答案: 半冒号通常仅用作sqlplus等交互式工具的命令终止符。

  • 我遇到了一个甲骨文错误, ORA-00933:SQL命令未正确结束 有以下几点。 我在每个语句末尾的“/”前面加了分号。 有什么建议我可能错了吗?

  • 本文向大家介绍Powershell创建数组正确、更快的方法,包括了Powershell创建数组正确、更快的方法的使用技巧和注意事项,需要的朋友参考一下 通常当新的对象添加到一个数组中,根据经验你最担心其性能问题。下面第一个例子将告诉你一个错误的操作方法: 在这个循环中,这个数组通过符号“+=”增加了许多新的对象。这样做会需要很长时间,因为在你改变其大小时Powershell每次需要去创造一个新的数

  • 我尝试在Spring Boot应用程序中配置apache kafka。我阅读了这篇文档,并按照以下步骤操作: 1)我将以下行添加到: 2)我创建新主题:

  • 我正在处理一个数据库,我用AutoCloseabe的extends创建了一个名为Dao的公共接口,所以我有一个实现这个接口的类,但我想在那里创建一些私有方法,但它们仍然需要Autocloseable。所以我的问题是,我不能在接口中创建私有方法而不在接口中定义它们。如果我在类中创建一个私有方法,但不从DAO重写,就会发生这种情况?他们不会有自动关闭的,是吗?。如果没有,我可以实现哪种解决方案?

  • 有了这句话: 为什么会出现这个错误: 第1行出错: ORA-00933:SQL命令未正确结束从站点按长度排序(城市)选择城市,长度(城市),其中ROWNUM=1