gpt4 book ai didi

C#如何使用C#向mysql中插入数据?

转载 作者:行者123 更新时间:2023-11-28 23:55:18 32 4
gpt4 key购买 nike

我对 C# 很陌生

我只创建了 1 个可以将数据插入 Mysql 数据库的表单。我的代码没有错误,但数据无法进入数据库。我很困惑。

这是我的代码Koneksi.cs

using System;
using System.Data;
using MySql.Data.MySqlClient;
using System.Drawing;
using System.Windows.Forms;



namespace timbangan
{
public class Koneksi
{
public MySqlConnection konek;

//string konfigKoneksi = "server=localhost; database=timbangan; uid=root; pwd=";
string konfigKoneksi = "Server=localhost;Database=timbangan;Uid=root;Pwd=";

public void bukaKoneksi()
{
konek = new MySqlConnection(konfigKoneksi);
konek.Open();

var temp = konek.State.ToString();

if (temp == "Open")
{

MessageBox.Show(@"Connection working.");

}
else {

MessageBox.Show(@"Please check connection string");



}
}
public void tutupKoneksi()
{
konek = new MySqlConnection(konfigKoneksi);
konek.Close();
}


}//end of koneksi
}//end namespace

Isidata.cs 文件

using System;
using System.Data;
using MySql.Data.MySqlClient;
using System.Windows.Forms;

namespace timbangan
{
public class Isidata
{
MySqlDataAdapter adapter;
MySqlCommand komand;
Koneksi classKoneksi;
DataTable tabel;
string sql = "";

public DataTable tambahData(string berat_filter, string qty, string nama_barang, string dari, string shift)
{
classKoneksi = new Koneksi();

sql = "insert into tb_timbang(BERAT_FILTER,QTY,NAMA_BARANG,DARI,SHIFT) values (" + berat_filter + ",'" + qty + "','" + nama_barang + "','" + dari + "','" + shift + "')";
//MessageBox.Show(sql);
tabel = new DataTable();


try
{
classKoneksi.bukaKoneksi();
komand = new MySqlCommand(sql);
adapter = new MySqlDataAdapter(sql, classKoneksi.konek);
adapter.Fill(tabel);
}

catch (Exception)
{
MessageBox.Show("error");
}
return tabel;
}


}//end of issdata
}//end of timbangan

Form1.cs文件

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Data;

namespace timbangan
{
public partial class Form1 : Form
{
public DataTable tabel;
public string status = "";
public string berat_filter, qty, nama_barang, dari, shift;


public Form1()
{
InitializeComponent();
}


private void button1_Click(object sender, EventArgs e)
{
Isidata isi = new Isidata();
tabel = isi.tambahData(tbBerat.Text, tbQty.Text, tbNama.Text, tbDari.Text, tbShift.Text);
MessageBox.Show("Berhasil");

}


}
}

谁能帮我解决这个问题?或者建议我使用更短的代码来插入数据?

提前致谢

最佳答案

你可以将你的类重新设计成这样

namespace timbangan
{
public static class Koneksi
{
public static MySqlConnection konek;

private static string konfigKoneksi = "Server=localhost;Database=timbangan;Uid=root;Pwd=";

public static MySqlConnection GetConnection()
{
konek = new MySqlConnection(konfigKoneksi);
konek.Open();
}
}//end of koneksi

public class Isidata
{
public int InsertData(string berat_filter, string qty, string nama_barang, string dari, string shift)
{
sql = @"insert into tb_timbang
(BERAT_FILTER,QTY,NAMA_BARANG,DARI,SHIFT)
values (@berat_filter,@qty,@nama_barang,@dari,@shift)";
try
{
using(MySqlConnection cnn = Koneksi.GetConnection())
using(MySqlCommand cmd = new MySqlCommand(sql, cnn))
{
cmd.Parameters.Add("@berat_filter", MySqlDbType.VarChar).Value = berat_filter;
cmd.Parameters.Add("@qty", MySqlDbType.VarChar).Value = qty;
cmd.Parameters.Add("@name_barang", MySqlDbType.VarChar).Value = nama_barang;
cmd.Parameters.Add("@dari", MySqlDbType.VarChar).Value = dari;
cmd.Parameters.Add("@shift", MySqlDbType.VarChar).Value = shift;
return cmd.ExecuteNonQuery();

}
catch (Exception ex)
{
MessageBox.Show("error " + ex.Message);
return -1;
}
}
}
}//end of issdata
}//end of timbangan

在这个设计中,没有更多的全局变量。可以完全删除相同的 Koneski 类,并且可以当场创建您的 MySqlConnection(从配置文件等外部源读取连接字符串)。不要认为这比保持已创建并始终打开的全局连接对象效率低。有一个 ADO.NET Connection Pooling基础架构(链接适用于 Sql Server,但它与 MySql 相同)运行非常高效以处理您的连接

重要的是 Using Statement (当不再需要释放宝贵的资源时关闭并处理命令和连接)以及用于填充发送到服务器的命令的参数。如果您需要在工作的其他方面使用适配器,您可以将其他类似的方法添加到您的 Isidata 类中

最后一点,请注意所有参数都是字符串类型。这可能有效,但最好在数据库中使用与字段类型相同类型的参数(当然,您的变量应该是正确的数据类型)。这对于日期时间字段尤其重要,当被视为字符串时可能会让人很头疼让它们正常工作)See MySqlDbType enum

关于C#如何使用C#向mysql中插入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31848470/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com