在开始之前,请确保你已经有数据库的账户,包括用户名、密码
而且创建好了一个table
我的table叫userinfo,里面有userid和userpassword两个域。
打开一个新的Project
Reference - Add Reference
搜索框搜Oracle
勾选System.Data.OracleClient
注意:把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>
这个很简单,visual studio可以直接拖拽设置。
我的长这个样子:
<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>
值得注意的地方:
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();
完整的代码:
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();
}
}
}
之后我会试着在app.config里面写sql算法。