C#链接Oracle数据库 查询功能 最简单的用户名密码登陆(通过OracleClient)connection, command,reader

在开始之前,请确保你已经有数据库的账户,包括用户名、密码
而且创建好了一个table
我的table叫userinfo,里面有userid和userpassword两个域。

打开一个新的Project

1. 在C#里添加OracleClient

Reference - Add Reference
搜索框搜Oracle
勾选System.Data.OracleClient
C#链接Oracle数据库 查询功能 最简单的用户名密码登陆(通过OracleClient)connection, command,reader_第1张图片

2. 写app.config

注意:把connectionString里的password和userid都要改成你自己的数据库登录名、密码。


<configuration>


	<startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    startup>
	<connectionStrings>
		<add name="ConnectionString" connectionString="Data Source="(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL=TCP)(HOST=localhost)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME=orcl)))";Persist Security Info=True;User ID=*****;Password=*****;Unicode=True" providerName="System.Data.OracleClient" />
	connectionStrings>
configuration>

3. xaml设计页面

这个很简单,visual studio可以直接拖拽设置。
我的长这个样子:
C#链接Oracle数据库 查询功能 最简单的用户名密码登陆(通过OracleClient)connection, command,reader_第2张图片

<Window x:Class="WpfApp3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp3"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <TextBox x:Name="usernameInput" HorizontalAlignment="Left" Height="23" Margin="330,181,0,0" TextWrapping="Wrap" Text="username" VerticalAlignment="Top" Width="120"/>
        <Label Content="用户名" HorizontalAlignment="Left" Margin="268,180,0,0" VerticalAlignment="Top"/>
        <Label Content="密码" HorizontalAlignment="Left" Margin="269,235,0,0" VerticalAlignment="Top"/>
        <PasswordBox x:Name="passwordInput" HorizontalAlignment="Left" Margin="328,238,0,0" VerticalAlignment="Top" Width="130"/>
        <Button x:Name="submitInput" Content="登陆" HorizontalAlignment="Left" Margin="317,305,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>

    Grid>
Window>

5. 写C#语句

值得注意的地方:

  1. 建立和database之间的connection,并且Open
String name = "ConnectionString";
ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings[name];
DbProviderFactory m_Factory = DbProviderFactories.GetFactory(cs.ProviderName);
DbConnection m_conn = m_Factory.CreateConnection();
m_conn.ConnectionString = cs.ConnectionString;
            if (m_conn.State == ConnectionState.Open)
            {
                m_conn.Close();
            
            };
            m_conn.Open();
  1. command
String commText = "Select * from userinfo";
var cmd = m_conn.CreateCommand();
cmd.CommandText = commText;
cmd.CommandType = CommandType.Text;
  1. reader
var odr = cmd.ExecuteReader();

完整的代码:

using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data;
using System.Collections;
using System.Reflection;
using System.Configuration;
using System.Data.Common;
using System.Data.OracleClient;

namespace WpfApp3
{
    /// 
    /// Interaction logic for MainWindow.xaml
    /// 
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();


        }

        private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
        {

        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var myPassword = passwordInput.Password;
            var myUsername = usernameInput.Text;


            string name = "ConnectionString";
            ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings[name];
            DbProviderFactory m_Factory = DbProviderFactories.GetFactory(cs.ProviderName);
            DbConnection m_conn = m_Factory.CreateConnection();
            m_conn.ConnectionString = cs.ConnectionString;
            if (m_conn.State == ConnectionState.Open)
            {
                m_conn.Close();
            
            };
            m_conn.Open();
            String commText = "Select * from userinfo";
            var cmd = m_conn.CreateCommand();
            cmd.CommandText = commText;
            cmd.CommandType = CommandType.Text;
            var odr = cmd.ExecuteReader(); 

            String currUsername = "";
            String currPassword = "";
            bool curr = false;
            while(odr.Read())
                
            {
                currUsername = odr["userid"].ToString();
                currPassword = odr["userpassword"].ToString();

                if (currUsername == myUsername && currPassword == myPassword)
                {
                    curr = true;
                }
            };
            if (curr==true)
            {
                MessageBox.Show("Logging Successful");

            }
            else
            {
                MessageBox.Show("Invalid Login Info");
            };
            m_conn.Close();

        }
    }
}

6. 测试一下

C#链接Oracle数据库 查询功能 最简单的用户名密码登陆(通过OracleClient)connection, command,reader_第3张图片

后续学习

之后我会试着在app.config里面写sql算法。

你可能感兴趣的:(数据库,数据库,sql,wpf,oracle,c#)