繁体   English   中英

C# 连接到 oracle DB

[英]C# connection to oracle DB

我正在尝试获取 select 结果并编写简单的身份验证。 但是我对 reader.HasRows/table.Rows.Count>0 有一些问题,它总是错误的。 也许原因不在阅读器/适配器中,但我没有其他想法

Form1.cs[enter image description here][1]
private void button1_Click(object sender, EventArgs e)
       {
           String loginUser = loginField.Text;
           String paswwordUser = passwordField.Text;
           DB db = new DB();
           DataTable table = new DataTable();
           OracleDataAdapter adapter = new OracleDataAdapter();
           OracleCommand command = new OracleCommand();
           command.CommandType = CommandType.Text;
           command.CommandText = "SELECT * from users where login='@uL' AND pass = '@uP' ";
           command.Parameters.Add("@uL", OracleDbType.Varchar2).Value = loginUser;
           command.Parameters.Add("@uP", OracleDbType.Varchar2).Value = paswwordUser;
           command.Connection = db.GetConnection();
           db.openConnection();
          // OracleDataReader reader = command.ExecuteReader();

            adapter.SelectCommand = command;
            table.Load(command.ExecuteReader());
            adapter.Fill(table);
           if (table.Rows.Count>0)
               MessageBox.Show("Yes");
           else
               MessageBox.Show("No");
       //    reader.Close();


       }
DB.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.DataAccess.Client;

{
   class DB
   {

       OracleConnection connection = new OracleConnection("Data Source=****/XEPDB1;User Id=****;Password=****;");
       public void openConnection()
       {
           if (connection.State == System.Data.ConnectionState.Closed)
               connection.Open();
       }
       public void closeConnection()
       {
           if (connection.State == System.Data.ConnectionState.Open)
               connection.Close();
       }
       public OracleConnection GetConnection()
       {
           return connection;
       }
   }
}

https://i.stack.imgur.com/8m5ZZ.jpg

尝试使用冒号:

command.CommandText = "SELECT * from users where login=:uL AND pass = :uP ";
 command.Parameters.Add("uL", OracleDbType.Varchar2).Value = loginUser;
 command.Parameters.Add("uP", OracleDbType.Varchar2).Value = paswwordUser;
command.Connection = db.GetConnection();
 db.openConnection();

DataSet dataSet = new DataSet();

using (OracleDataAdapter dataAdapter = new OracleDataAdapter())
{
  dataAdapter.SelectCommand = command;
  dataAdapter.Fill(dataSet, "Users");
}

var dataTable= dataSet.Tables["Users"];

this.BindingContext[dataTable].EndCurrentEdit();

if(dataSet.HasChanges(DataRowState.Modified))
{
  // do your stuff here
}

暂无
暂无

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

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