在C#中插入SQL数据库

用户名

我试图在我的C#应用​​程序中插入SQL数据库。

我阅读了一些文档,并提出了我认为可行的方法。实际上,发生的情况是,当用户输入数据并按下“提交”按钮时,应用程序冻结了片刻,然后给我一个“ SqlException”,并提到了一些无法连接的信息。

我不确定我是否正确使用了连接字符串,所以我正在寻求帮助。

这些是我用来构建查询并建立连接的方法:

private void btn_Submit_Click(object sender, EventArgs e)
{
    if (isValidData())
    {
        //MessageBox.Show("Valid", "All Entries Were Valid!");

        //CONVERT FORM VALUES AND STORE IN VARIABLES TO SEND TO MYSQL QUERY
        DateTime saleTime = saleDatePicker.Value;
        Decimal price = Convert.ToDecimal(txt_Price.Text);
        string customerName = txt_CustomerName.Text;
        string customerPhone = txt_CustomerPhone.Text;
        string description = rTxt_Description.Text;

        //Build Query string
        string query = "INSERT into SALES VALUES ('" + saleTime + "','" + 
            price + "','" + customerName  + "','" + customerPhone  + "','" + 
            description + "');";

        insertValues(query);

    }
}
private void insertValues(string q)
{
    SqlConnection sqlConnection1 = new SqlConnection("Server=host;Database=dbname;User Id=username;Password=password;");
    SqlCommand cmd = new SqlCommand();
    SqlDataReader reader;

    cmd.CommandText = q;
    cmd.CommandType = CommandType.Text;
    cmd.Connection = sqlConnection1;

    sqlConnection1.Open();

    reader = cmd.ExecuteReader();
    // Data is accessible through the DataReader object here.

    sqlConnection1.Close();
}

在此处输入图片说明

史蒂夫

我不确定您的连接字符串,但是看到您的问题已用MySql标记,那么您需要使用不同的类来与MySql“对话”。现在,您正在使用的服务器用于与Microsoft Sql Server一起工作。

您需要更改SqlConnectionSqlCommandSqlDataReader到名为MySQL的对手MySqlConnectionMySqlCommandMySqlDataReader在下载并安装MySql NET / Connector之后,可以使用这些类,然后设置对MySql.Data.Dll的引用并将其添加using MySql.Data.MySqlClient;到您的项目中

关于MySql的connectionstring,您还需要遵循规则并使用此站点中说明的关键字

这些是使程序可以运行的基本步骤,但是您在这里遇到了很大的问题。它在sql命令中称为字符串串联,此习惯直接导致Sql Injection漏洞

您需要将代码更改为以下内容:

private void btn_Submit_Click(object sender, EventArgs e)
{
    if (isValidData())
    {

        //CONVERT FORM VALUES AND STORE IN VARIABLES TO SEND TO MYSQL QUERY
        DateTime saleTime = saleDatePicker.Value;
        Decimal price = Convert.ToDecimal(txt_Price.Text);
        string customerName = txt_CustomerName.Text;
        string customerPhone = txt_CustomerPhone.Text;
        string description = rTxt_Description.Text;

        // Create the query using parameter placeholders, not the actual stringized values....
        string query = "INSERT into SALES VALUES (@stime, @price, @cname,@cphone,@cdesc)";

        // Create a list of parameters with the actual values with the placeholders names
        // Pay attention to the Size value for string parameters, you need to change it 
        // accordingly to your fields size on the database table.
        List<MySqlParameter> prms = new List<MySqlParameter>()
        {
            new MySqlParameter {ParameterName="@stime", MySqlDbType=MySqlDbType.DateTime, Value =  saleTime },
            new MySqlParameter {ParameterName="@price", MySqlDbType=MySqlDbType.Decimal, Value =  price },
            new MySqlParameter {ParameterName="@cname", MySqlDbType=MySqlDbType.VarChar, Value =  customerName, Size = 150 },
            new MySqlParameter {ParameterName="@cphone", MySqlDbType=MySqlDbType.VarChar, Value = customerPhone , Size = 150 },
            new MySqlParameter {ParameterName="@desc", MySqlDbType=MySqlDbType.VarChar, Value = description , Size = 150 }
        };

        // Pass query and parameters to the insertion method.
        // get the return value. if it is more than zero you are ok..
        int result = insertValues(query, prms);
        // if(result > 0)
        //    .... insertion ok ....
    }
}

private int insertValues(string q, List<MySqlParameter> parameters)
{
    using(MySqlConnection con = new MySqlConnection(....))
    using(MySqlCommand cmd = new MySqlCommand(q, con))
    {
        con.Open();
        cmd.Parameters.AddRange(parameters.ToArray());
        int rowsInserted = cmd.ExecuteNonQuery();
        return rowsInserted;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#将数据从表单插入Access数据库

来自分类Dev

如何使用C#将数组的元素插入SQL Server数据库?

来自分类Dev

使用C#中的主键将行插入数据库的最佳方法是什么

来自分类Dev

C#数据库中的多个并行插入

来自分类Dev

使用C#,如何使用循环在MS Access数据库中插入递增数字?

来自分类Dev

使用C#将数据插入SQLite数据库

来自分类Dev

将整数和字符串插入SQL Server数据库C#的问题

来自分类Dev

试图统一插入C#中的SQLite数据库

来自分类Dev

将数据插入数据库C#中的表中

来自分类Dev

在C#中连接到SQL数据库

来自分类Dev

C#将数据插入SQL数据库的最快方法

来自分类Dev

从C#代码插入SQL数据库时出现重复密钥

来自分类Dev

C#无法将数据插入SQL Server数据库

来自分类Dev

如何使用C#将Excel文件中的数据插入Microsoft LocalDB数据库

来自分类Dev

使用C#将Null插入数据库

来自分类Dev

使用C#插入SQL Server数据库的问题

来自分类Dev

WCF服务将数据插入Visual Studio C#中的数据库

来自分类Dev

C#控制台应用程序在MySQL数据库中插入行

来自分类Dev

从C#程序插入时SQL数据库未更新

来自分类Dev

在SQL中将相关项目插入表中,而不是从C#进行两个数据库调用

来自分类Dev

批量插入SQL Server 2012数据库-C#

来自分类Dev

无法使用C#在数据库中插入当前时间戳

来自分类Dev

从C#使用Entity Framework插入数据库

来自分类Dev

无法从C#中的SQL Server数据库读取

来自分类Dev

从C#代码插入SQL数据库时出现重复密钥

来自分类Dev

C#无法将数据插入SQL Server数据库

来自分类Dev

如何使用C#将图片插入数据库?

来自分类Dev

更新C#中的数据库字段SQL

来自分类Dev

无法从C#将inkPicture插入SQL Server数据库

Related 相关文章

  1. 1

    C#将数据从表单插入Access数据库

  2. 2

    如何使用C#将数组的元素插入SQL Server数据库?

  3. 3

    使用C#中的主键将行插入数据库的最佳方法是什么

  4. 4

    C#数据库中的多个并行插入

  5. 5

    使用C#,如何使用循环在MS Access数据库中插入递增数字?

  6. 6

    使用C#将数据插入SQLite数据库

  7. 7

    将整数和字符串插入SQL Server数据库C#的问题

  8. 8

    试图统一插入C#中的SQLite数据库

  9. 9

    将数据插入数据库C#中的表中

  10. 10

    在C#中连接到SQL数据库

  11. 11

    C#将数据插入SQL数据库的最快方法

  12. 12

    从C#代码插入SQL数据库时出现重复密钥

  13. 13

    C#无法将数据插入SQL Server数据库

  14. 14

    如何使用C#将Excel文件中的数据插入Microsoft LocalDB数据库

  15. 15

    使用C#将Null插入数据库

  16. 16

    使用C#插入SQL Server数据库的问题

  17. 17

    WCF服务将数据插入Visual Studio C#中的数据库

  18. 18

    C#控制台应用程序在MySQL数据库中插入行

  19. 19

    从C#程序插入时SQL数据库未更新

  20. 20

    在SQL中将相关项目插入表中,而不是从C#进行两个数据库调用

  21. 21

    批量插入SQL Server 2012数据库-C#

  22. 22

    无法使用C#在数据库中插入当前时间戳

  23. 23

    从C#使用Entity Framework插入数据库

  24. 24

    无法从C#中的SQL Server数据库读取

  25. 25

    从C#代码插入SQL数据库时出现重复密钥

  26. 26

    C#无法将数据插入SQL Server数据库

  27. 27

    如何使用C#将图片插入数据库?

  28. 28

    更新C#中的数据库字段SQL

  29. 29

    无法从C#将inkPicture插入SQL Server数据库

热门标签

归档