我正在尝试在上传文件中注入值。我是C#.net的新手,我用Google搜索了很多答案,但是找不到任何能给我提供帮助的答案。我没有从数据库获取值的问题,但是当我尝试插入它时总是返回false。我不知道还能做什么。
我在每一行都使用了断点,但我确实需要帮助。
正如我所说从数据库中获取值没有问题所以我连接但插入始终返回false。也许这个问题对你们大师来说要清楚得多:)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Data.SqlClient;
using System.Xml;
using System.Xml.Linq;
using System.IO;
public partial class Extra : System.Web.UI.Page
{
public int count = 0;
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = "Hello choose a file to upload";
}
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
try
{
if (FileUpload1.PostedFile.ContentLength > 2000000)
{
Label1.Text = "File is to big";
}
else
{
FileUpload1.SaveAs("C:\\Uploads\\" + FileUpload1.FileName);
Label1.Text = "File name: " + FileUpload1.PostedFile.FileName + "<br />" +
FileUpload1.PostedFile.ContentLength + "kb<br />" +
FileUpload1.PostedFile.ContentType;
try
{
//open connection
SqlConnection con = new SqlConnection("Data Source='localhost';Initial Catalog=webDB;Trusted_Connection=true;Integrated Security=SSPI");
//con.Database = "";Data Source=JOHANNES-TOSH;Initial Catalog=webDB;Integrated Security=True
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Parameters.Add("@name", SqlDbType.NVarChar, 150);
cmd.Parameters["@name"].Value = FileUpload1.PostedFile.FileName;
cmd.Parameters.Add("@type", SqlDbType.NVarChar, 150);
cmd.Parameters["@type"].Value = FileUpload1.PostedFile.ContentType;
cmd.Parameters.Add("@size", SqlDbType.Int, 11);
cmd.Parameters["@size"].Value = FileUpload1.PostedFile.ContentLength;
cmd.CommandText = "INSERT INTO [CORE.uploads] (name, type, size) VALUES (@name, @type, @size)";
//cmd.CommandType = CommandType.TableDirect;
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
}
catch (SqlException err) {
Response.Write("<br />");
Response.Write(err.Message.ToString());
Response.Write(err.LineNumber);
}
}
}
catch (Exception ex)
{
Label1.Text = ex.Message.ToString();
}
}
else
{
Label1.Text = "You have not specified a file.";
}
}
}
答案 0 :(得分:1)
您实际上不需要为该情况指定参数类型的大小。试试这种方式。 如果这不起作用,请检查表名称和列名称以确保它们相同。另外,请检查其余代码。 希望这有帮助。
SqlCommand cmd = new SqlCommand();
cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = FileUpload1.PostedFile.FileName;
cmd.Parameters.Add("@type", SqlDbType.NVarChar).Value = FileUpload1.PostedFile.ContentType;
cmd.Parameters.Add("@size", SqlDbType.Int).Value = FileUpload1.PostedFile.ContentLength;
cmd.CommandText = "INSERT INTO [CORE].[uploads] (name, type, size) VALUES (@name, @type, @size)";
cmd.Connection = con;
cmd.ExecuteNonQuery();
编辑:另外,请确保您的连接字符串正常。如果使用数据库连接打开窗口(忘记该窗口的名称),可以在数据库连接的属性中找到它