亏得我一行行敲代码,你不会直接把代码贴出来,发什么截图
问题很简单,就是数据库获取byte[]出错了
using (SqlCommand com = new SqlCommand(strSql, con)){
SqlDataReader dr = comExecuteReader();
drRead();
var length = drGetBytes(1, 0, null, 0, intMaxValue);
byte[] byt = new byte[length];
drGetBytes(0, 0, byt, 0, intMaxValue);
using (MemoryStream memory = new MemoryStream(byt, 0, (int)length))
{
Image map = ImageFromStream(memory);
pictureBox1Image = map;
mapSave("d:\\textjpg");
}
drClose();
}
你那个GetBytes的用法完全是错的,这个返回值是byte数组的长度,不是数据,数据时第三个参数
这里用了两个,第一个是为了获取长度好初始化数组,第二次才是获取数据
MSDN上的示例写的很清楚,只不过是SQLServer的,我这没有MySql,应该跟这一样的问题
>
还有很多细节问题如前面保存bmp格式后面读取保存的jpg格式、DialogResult不是用drToString() == "OK"而是dr==DialogResultOK来比较等多了去了,跟本问答无关就不细说了
我只有aspnet的,c#也可以使用,但是没测试过java那些的。将Excel里面的数据导入到数据库中的原理就是将Excel里面的数据存储到一个dataTable中,然后将数据一行一行添加到数据库的表里。给你部分代码,相信你能够如此好学,应该能看懂,有些变量你自己研究是什么,不然全部给你打出来了,你就只会copy了。
SqlConnection con = new SqlConnection(ConfigurationManagerAppSettings["aa"]ToString());conOpen();//数据库连接字符串
DataTable dtXls = new DataTable();
if (thisfudAddPostedFileFileNameToString()Trim() != "" && thisfudAddPostedFileFileName!=null)
{
string filePath = thisfudAddPostedFileFileNameToString()Trim();
FileInfo fileTag = new FileInfo(fudAddPostedFileFileName);
string extendedName = fileTagExtension;
if (extendedNameToLower() != "xls" && extendedNameToLower() != "xlsx")
{
ResponseWrite("<script>alert('请选择一个Excel文件!');</script>");
return;
}
else
{
dtXls = ExcelToDataTable(filePath,extendedName);
if (dtXls==null||dtXlsRowsCount <= 0 || dtXlsColumns[0]ToString() == "")
{
ResponseWrite("<script>alert('请你确认上传的Excel中有资料!');</script>");
return;
}
else
{
if (dtXlsColumns[0]ToString() != "手机号码" || dtXlsColumns[1]ToString() != "状态")
{
ResponseWrite("<script>alert('请确定Excel资料的格式为[手机号码][状态]!');</script>");
return;
}
else
{
if (dtXlsRows[0][0]ToString() == "")
{
ResponseWrite("<script>alert('请确定Excel资料的格式为[手机号码][状态]!');</script>");
return;
}
else
{
string result = AddXlsData(dtXls, con);
string[] resultData = resultSplit('-');
string msg = "资料上传成功!共计" + resultData[0] + "条成功," + resultData[1] + "条失败!";
ResponseWrite("<script>alert('" + msg + "');</script>");
logwriteLogOpera(userid, "UnExistMobile_Magaspx", "UnExistMobile_Magaspxcs", "成功上传一批空号");//记录log
BindData();
return;
}
}
}
}
conClose();
//
#region ExcelToDataTable
/// <summary>
/// 读取xls文件
/// Add by
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
protected DataTable ExcelToDataTable(string fileName, string extendedName)
{
string strConn = stringEmpty;
if (extendedNameToLower() == "xls")
{
strConn = "Provider=MicrosoftJetOLEDB40;Data Source=" + fileName + ";Extended Properties='Excel 80;HDR=Yes;IMEX=1';";
}
if (extendedNameToLower() == "xlsx")
{
strConn = "Provider=MicrosoftACEOLEDB120;Data Source=" + fileName + ";Extended Properties='Excel 120;HDR=YES'";
}
OleDbConnection conn = new OleDbConnection(strConn);
connOpen();
SystemDataDataTable schemaTable = connGetOleDbSchemaTable(SystemDataOleDbOleDbSchemaGuidTables, null);
string tableName = schemaTableRows[0][2]ToString()Trim();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel = "Select From [" + tableName + "]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommandFill(ds, tableName);
if (ds != null)
{
SystemDataDataTable dt = dsTables[0];
return dt;
}
else
{
return null;
}
connClose();
dsDispose();
}
#endregion
string connectionString = stringEmpty;
string id = stringEmpty;
string newValue = stringEmpty;
SqlConnection connection = new SqlConnection(connectionString);
connectionOpen();
try
{
SqlDataAdapter adapter = new SqlDataAdapter();
adapterSelectCommand = new SqlCommand("SELECT ID, Name FROM Table01 WHERE ID = @ID", connection);
adapterSelectCommandParametersAdd("@ID", SqlDbTypeInt, 4, ID);
adapterSelectCommandParameters[0]Value = id;
adapterInsertCommand = new SqlCommand("INSERT Table01 (Name,Value) VALUES (@Name, @ID)", connection);
adapterInsertCommandParametersAdd(new SqlParameter("@Value", SqlDbTypeVarChar, 50, "Name"));
adapterInsertCommandParametersAdd(new SqlParameter("@ID", SqlDbTypeInt, 4, "ID"));
DataSet ds = new DataSet();
adapterFill(ds);
if(dsTables[0]RowsCount > 0)
{
dsTables[0]RowsAdd(new object[]{1, "第一行"});
dsTables[0]RowsAdd(new object[]{2, "第二行"});
dsTables[0]RowsAdd(new object[]{3, "第三行"});
dsTables[0]RowsAdd(new object[]{4, "第四行"});
dsTables[0]RowsAdd(new object[]{5, "第五行"});
dsTables[0]RowsAdd(new object[]{6, "第六行"});
adapterUpdate(ds);
}
}
finally
{
connectionClose();
}
写一个insert执行方法,把dataTable一条一条执行就行了啊
你的采纳是我前进的动力,还有不懂的地方,请继续“追问”。
如你还有别的问题,可另外向我求助;答题不易,互相理解,
建立一个DataTable并且为之添加数据方法:
使用ACCESS或其它任何款数据库应用软件可建立数据库、表。生成后可输入数据。
使用编程软件建立数据库、表,通过输入界面输入。
使用EXCEL电子表格输入相关数据,可导入数据表。
public static void UpdateAccess(DataTable temp)
{
OleDbConnection con = new OleDbConnection("Provider=MicrosoftJetOLEDB40;Data source=DataMDB;Persist Security Info=False;Jet OLEDB:Database Password=");
try
{
conOpen();
OleDbDataAdapter Bada = new OleDbDataAdapter("SELECT FROM TotalData where 1 =2", con);//建立一个DataAdapter对象
OleDbCommandBuilder cb = new OleDbCommandBuilder(Bada);//这里的CommandBuilder对象一定不要忘了,一般就是写在DataAdapter定义的后面
cbQuotePrefix = "[";
cbQuoteSuffix = "]";
DataSet ds = new DataSet();//建立DataSet对象
BadaFill(ds, "demo");//填充DataSet
foreach (DataRow tempRow in tempRows)
{
DataRow dr = dsTables["demo"]NewRow();
drItemArray = tempRowItemArray;//行复制
dsTables["demo"]RowsAdd(dr);
}
BadaUpdate(ds, "demo");//用DataAdapter的Update()方法进行数据库的更新
}
catch (Exception ex)
{
ConsoleWriteLine(exToString());
}
finally
{
conClose();
}
}
以上就是关于C# 上传图片至数据库全部的内容,包括:C# 上传图片至数据库、mvc里如何上传excel然后将里面的数据导入到SQL数据库里、c# 如何向数据库插入整个table等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)