我是C#
的初学者。我有2 DataBases
。一个用于用户注册,另一个用于支持部分注册。
我正在尝试将username
,password
,email
从一个DataGridView
移到另一个;然后INSERT
到数据库。
我还尝试将相同的密码解密传递给其他数据库(这样,用户将需要注册一次,并使用相同的原始注册信息来访问支持部分)。
但是,我遇到一个错误:
“地址”列不能为空
而且我无法想到match the decryption
列的password
代码。
private void button3_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView2.Rows.Count; i++)
{
try
{
string constring = "datasource=server.server.com;port=0000;username=root;password=root;SSL Mode=None";
string query = "insert into server.user_account (username, passwd) values (@username,@passwd) ON DUPLICATE KEY UPDATE username = username,passwd=passwd;insert into server.user_email (address) values (@address) ON DUPLICATE KEY UPDATE address = address";
MySqlConnection conDataBase = new MySqlConnection(constring);
MySqlCommand cmdDataBase = new MySqlCommand(query, conDataBase);
MySqlDataReader myReader;
cmdDataBase.Parameters.AddWithValue("@username", dataGridView2.Rows[i].Cells[0].Value);
cmdDataBase.Parameters.AddWithValue("@passwd", dataGridView2.Rows[i].Cells[1].Value);
cmdDataBase.Parameters.AddWithValue("@address", dataGridView2.Rows[i].Cells[2].Value);
//cmdDataBase.Parameters.Clear();
conDataBase.Open();
myReader = cmdDataBase.ExecuteReader();
while (myReader.Read())
{
}
conDataBase.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
我尝试将@address
更改为?address
...但仍然遇到相同的错误。
答案 0 :(得分:0)
Column 'address' cannot be null
这意味着您
dataGridView2.Rows[i].Cells[2].Value
为空
因此,根据要求,如果用户可以将null用作地址,则必须更改数据库架构
这里是How do I modify a MySQL column to allow NULL?
否则,您必须在代码中放入空检查。
答案 1 :(得分:0)
如果server.user_account中有一个address
列:
在插入查询中,您必须提供一个地址:
string query = "insert into server.user_account (username, passwd, address) values (@username,@passwd,@address) ON DUPLICATE KEY UPDATE username = username,passwd=passwd;insert into server.user_email (address) values (@address) ON DUPLICATE KEY UPDATE address = address";
或者在您的数据库管理工具中,将server.user_account中的address列设置为接受空值。
如果server.user_account中没有地址列,则意味着您的address
变量为NULL,并且需要在将其发送到字符串之前确保它不为null。
对于密码解密: 如果您使用md5或shaX之类的哈希方法对其进行加密,则无法对其进行解密。 这就是为什么它是如此安全的原因。要验证用户输入,您必须对其进行加密,并将其与存储在数据库中的加密值进行比较。 (很抱歉,我对加密和安全性了解不多。
希望它对您有帮助!