我想把数据插入数据库

本文关键字:插入 数据库 数据 | 更新日期: 2023-09-27 18:28:04

我想将数据插入数据库。

string pa = "4898";  
string equery="Insert into Users(pas)values('"+pa+"')";

当我将数据插入数据库时,它表示字符串或二进制数据将被截断,语句已终止。所以我把表中的nvarchar(50)改成了nvarchar(max)

并且这些语句已经被执行并保存在像傉䝎਍ਚ这样不可读格式的数据库中。以及如何克服这个问题并将数据库中的数据保存为"4898"。

private void save_Click(object sender, EventArgs e)
{
    string password = "4898";
    string equery="Insert into Users(name,gender,dateofbirth,age,fathername,
                                      address,citiy,state,country,zipcode,
                                      mobile,phone,email,jobtitle,
                                      dateofjoin,pic,passwords)
                             values('"+nametxt.Text.ToString().Trim()+"',
                                     @gender,
                                     '"+dateofbirth.Text.ToString().Trim()+"',
                                     '"+age.Value.ToString().Trim()+"',
                                     '"+fathertxt.Text.ToString().Trim()+"',
                                    '"+addresstxt.Text.ToString().Trim()+"',
                                  '"+citiytxt.Text.ToString().Trim()+"',
                                  '"+statetxt.Text.ToString().Trim()+"',
                                  '"+country.Text.ToString().Trim()+"',
                                  '"+ziptxt.Text.ToString().Trim()+"',
                                  '"+mobiletxt.Text.ToString().Trim()+"',
                                  '"+phonetxt.Text.ToString().Trim()+"',
                                  '"+emailtxt.Text.ToString().Trim()+"',
                                  '"+jobtxt.Text.ToString().Trim()+
                                  "','"+dateofjoin.Text.ToString().Trim()+"',
                                  '"+password+"',@pic)";
    SqlCommand cmd = new SqlCommand(equery, con);
    if(male.Checked)
        cmd.Parameters.AddWithValue("@gender","Male");
    else
        cmd.Parameters.AddWithValue("@gender","Female");
    MemoryStream stream = new MemoryStream();
    pictureBox1.Image.Save(stream,System.Drawing.Imaging.ImageFormat.Png);
    byte[] pic = stream.ToArray();
    cmd.Parameters.AddWithValue("@pic", pic);
    try
    {
        con.Open();
        cmd.ExecuteNonQuery();
        MessageBox.Show("Saved Successfully");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    finally
    {
        con.Close();
    }
    MessageBox.Show("Saved Successfully");
    idtxt.Text = "";
    nametxt.Text = "";
    age.Value = Convert.ToDecimal(null);
    male.Checked = false;
    female.Checked = false;
    dateofbirth.Text = "";
    fathertxt.Text = "";
    addresstxt.Text = "";
    citiytxt.Text = "";
    statetxt.Text = "";
    country.Text = "";
    ziptxt.Text = "";
    mobiletxt.Text = "";
    phonetxt.Text = "";
    emailtxt.Text = "";
    dateofjoin.Text = "";
    jobtxt.Text = "";
    pictureBox1.Image = null;
}

我想把数据插入数据库

查看插入语句:

"Insert into Users(... pic,passwords) values (... '"+password+"',@pic)";

看起来你把CCD_ 4和CCD_ 5互换了。


此外,正如其他人在评论中指出的那样,您应该只使用参数化查询(以防止SQL注入),尤其是在处理用户或任何其他不受信任的源插入的文本时。

您的代码中存在逻辑错误。交换

'"+password+"',@pic)";

在你的字符串钱包里。顺便提一个建议!最好使用"linq to Sql",而不是查询传递方法!因为"Linq to Sql"为您做了所有的事情。您只需要给出值:)