所以我有这个代码我用于我的项目。它应该生成在文本框中输入的数字,但事情是在我保存png后,一旦你在文本框中编辑文本,QrCode将生成新的。所以,为了避免这种情况,我把文本框放在readonly上,这里应该显示的数据是来自数据库的数据。但它总是空着的。这是我在表单上的代码,我将从数据库中获取数据。
private void qrcode_Click(object sender, RoutedEventArgs e)
{
QRCode qr = new QRCode();
qr.Show();
this.Hide();
qnum = driver("Select LicenseNumber from driver where FranchiseNumber = '" + fn + "'").ToString();
}
这是我传递数据的地方。
public QRCode()
{
InitializeComponent();
textBox1.Text = AddDriver.qnum;
//textBox1.Text = "hello";
}
我试着打招呼,看看它是否会显示,是的。但是,当我尝试上面的那个时,什么都没有。 任何人都可以帮助我,并告诉我什么是错的。我怎样才能做到这一点?
答案 0 :(得分:1)
我已经解决了这个问题,这就是我使用的代码。希望它可以提供帮助。
public partial class AddDriver : Window
{
MySqlConnection connection = new MySqlConnection();
MySqlDataAdapter adapter = new MySqlDataAdapter();
DatabaseController db = new DatabaseController();
public static string qnum;
public AddDriver()
{
InitializeComponent();
}
private void btn_home_Click(object sender, RoutedEventArgs e)
{
MainWindow main = new MainWindow();
main.Show();
this.Hide();
}
public DataTable driver(string query)
{
DataTable dtable = new DataTable();
try
{
OpenDbase(query);
adapter.Fill(dtable);
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return dtable;
}
private void OpenDbase(string query)
{
try
{
string connectionstring = "server=sql12.freemysqlhosting.net; port=3306; user id=sql12192362; password= DtxpressProject25!; persistsecurityinfo=False;database=sql12192362";
connection = new MySqlConnection(connectionstring);
adapter.SelectCommand = new MySqlCommand(query, connection);
MySqlCommandBuilder cb = new MySqlCommandBuilder(adapter);
connection.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void qrcode_Click(object sender, RoutedEventArgs e)
{
string fn = fnum.Text;
int count = driver("Select * from driver where FranchiseNumber ='" + fn + "'").DefaultView.Count;
if (count > 0)
{
MessageBox.Show("'"+fn+"' is already on the list");
}
else
{
OpenDbase("Insert into driver (LastName, FirstName,MidInitial,Address,Contact,FranchiseNumber,LicenseNumber,Income, Password) values ('" + this.lname.Text + "','" + this.fname.Text + "','" + this.midint.Text + "','" + this.addrss.Text + "','" + this.contact.Text + "','" + this.fnum.Text + "','" + this.lnum.Text + "', '0', '" + this.fnum.Text + "')");
DataTable dtable = new DataTable();
adapter.Fill(dtable);
connection.Close();
}
QRCode qr = new QRCode();
qr.Show();
this.Hide();
qnum = fnum.Text;
}
这是我将通过的地方。
public partial class QRCode : Form
{
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class ArgumentNullException : ArgumentException { }
MySqlConnection connection = new MySqlConnection("server=sql12.freemysqlhosting.net; port=3306; user id=sql12192362; password= DtxpressProject25!; persistsecurityinfo=False;database=sql12192362");
MySqlCommand command;
public QRCode()
{
InitializeComponent();
}
private void btn_gen_Click(object sender, EventArgs e)
{
Zen.Barcode.CodeQrBarcodeDraw qrcode = Zen.Barcode.BarcodeDrawFactory.CodeQr;
pictureBox1.Image = qrcode.Draw(textBox1.Text, 50);
SaveFileDialog f = new SaveFileDialog();
f.Filter = "PNG(*.PNG)|*.png";
if (f.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image.Save(f.FileName);
MessageBox.Show("QR Code has been successfully saved.");
}
}
private void btn_sve_Click(object sender, EventArgs e)
{
MemoryStream ms = new MemoryStream();
byte[] img = ms.ToArray();
string fn = AddDriver.qnum.ToString();
String insertQuery = "Update driver set QrCode = '" + @img + "' where FranchiseNumber= '"+fn+"'";
connection.Open();
command = new MySqlCommand(insertQuery, connection);
command.Parameters.Add("@img", MySqlDbType.Blob);
command.Parameters["@img"].Value = img;
if (command.ExecuteNonQuery() == 1)
{
MessageBox.Show("Driver has been added.");
}
connection.Close();
AddDriver back = new AddDriver();
back.Show();
this.Hide();
}
到目前为止,它工作得很好。还要感谢那些回答的人。
答案 1 :(得分:0)
尝试设置" qnum" string
包含string
中包含值的DataTable
,并在显示窗口之前将其设置为:
private void qrcode_Click(object sender, RoutedEventArgs e)
{
vr dt = driver("Select LicenseNumber from driver where FranchiseNumber = '" + fn + "'");
qnum = "";
if(dt != null)
{
foreach(var row in dt.Rows)
qnum += row["LicenseNumber"].ToString() + ", ";
}
QRCode qr = new QRCode();
qr.Show();
this.Hide();
}
另请注意,在执行动态SQL查询时应使用参数: