我对在C#中连接到MySql数据库有一些疑问。
我基于youtube https://www.youtube.com/watch?v=IH0dYO8QOow上的本教程建立了数据库连接,但是我在下面的视频中读到评论,这种方法对于MySql注入是显而易见的。
我正在使用MySql中的PDO准备的语句在PHP中工作,现在我想知道:
使用xampp,wamp ....在本地主机上制作服务器还是安装Microfost Sql服务器更好?
如何使用C#中的预备语句进行查询以及如何使其安全
我正在使用Microsoft SQL Server 2014创建数据库。
而且请不要给我负分数,因为我是C#的新手,想学习,而且我听说这是提出问题并获得适当帮助的最佳场所。
这是连接到数据库并检查有效的用户名和密码的简单登录表单的代码,如果一切正常,它将打开新窗口并隐藏登录表单。
using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
// connect to a database
SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Mario\Documents\mojaBaza1.mdf;Integrated Security=True;Connect Timeout=30");
// make new query
SqlDataAdapter sda = new SqlDataAdapter("SELECT COUNT(*) FROM users WHERE username = '" + textBox1.Text + "' AND password = '" + maskedTextBox1.Text + "'",connection);
// fetch data from table
DataTable dt = new DataTable();
sda.Fill(dt);
// check query for result, if returned 1 login
if (dt.Rows[0][0].ToString() == "1")
{
// hides new window
this.Hide();
// instance of new window when user log in
Main ss = new Main();
// show new window
ss.Show();
}
else
{
// error message if user entered invalid data
MessageBox.Show("Invalid username or password, please try again.");
}
}
}
}
最佳答案
尝试这个:
SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Mario\Documents\mojaBaza1.mdf;Integrated Security=True;Connect Timeout=30");
SqlCommand cmd= connection.CreateCommand();
cmd.CommandText="SELECT COUNT(*) FROM users WHERE username=@username AND password=@password";
cmd.parameters.AddWithValue("@username",textBox1.Text);
cmd.parameters.AddWithValue("@password",maskedTextBox1.Text);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
这样,您就可以在查询中使用参数,这几乎是预准备语句的C#版本。
关于c# - C#连接到数据库并安全输入数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42353733/