需要将电脑上的.txt文件保存到sql server数据库中
(注意: 数据保存到数据库中以后 text类型这一列应该显示的是<二进制数据>)
然后需要的时候 将此保存到数据库的二进制数据(也就是数据库中text类型的数据)读取出来
显示到符文本框中 显示到哪倒无所谓了
对于text类型的数据 该怎么读取和写入啊?
在线等!~!~
9 个解决方案
#1
lz可以使用FileStream流进行读写,关于具体如何使用,lz看看帮助就很容易实现了
#2
filestream 我都进去 全是?之类的 不是二进制数据啊
你看我的代码
ofd.Title = "*txt|*.txt|*.doc|*.docx";
if (ofd.ShowDialog() == DialogResult.OK)
{
string fullpath = ofd.FileName;//文件路径
FileStream fs = new FileStream(fullpath, FileMode.Open);
//BinaryReader br = new BinaryReader(fs);
StreamReader sr = new StreamReader(fs);
string txt = sr.ReadToEnd();
//打开数据库
string server = @".\SQLEXPRESS";
string conStr = string.Format("server={0};uid={1};pwd={2};database={3}",
server, "sa", "123", "TestDB");
SqlConnection con = new SqlConnection(conStr);
try
{
con.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
SqlCommand com = new SqlCommand("insert into Text values(@TextList)", con);
com.Parameters.Add("TextList", SqlDbType.Text);
com.Parameters["TextList"].Value = txt;
com.ExecuteNonQuery();
con.Close();
}
#3
Text字段类型怎么会显示<二进制数据>呢?
#4
那我应该有什么类型的呢?还是说就用TEXT类型 保存我说的数据
除了image类型 还有什么类型我能用?
#5
希望能帮倒你
//这个Paths是文件路径比如说 D:/test.txt
var Rbytes = File.ReadAllBytes(Paths); //把txt文件的内容读取出来给Rbytes
var db = datetable(Rbytes);
foreach (var t in db )
{
Info.Text = t;
}
//这个Paths是文件路径比如说 D:/test.txt
var Rbytes = File.ReadAllBytes(Paths); //把txt文件的内容读取出来给Rbytes
var db = datetable(Rbytes);
foreach (var t in db )
{
Info.Text = t;
}
#6
如果你是全文本的,直接使用Text类型就好。
我看到你的"*txt|*.txt|*.doc|*.docx";如果是doc文档,就有可能包含图片了,
你可以用varbinary(MAX)
class Program
{
static void Main(string[] args)
{
Console.WriteLine("读取文件");
byte[] buffer;
using (FileStream fs = new FileStream(@"D:\Test.docx", FileMode.Open, FileAccess.Read))
{
buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
}
using(SqlConnection sqlCn=new SqlConnection(
"Data Source=...; Initial Catalog=...; User Id=...; Password=..."))
using (SqlCommand sqlCmd = sqlCn.CreateCommand())
{
Console.WriteLine("写入数据库");
sqlCmd.CommandText = "insert into Table_1(Text) values(@Text)";
sqlCmd.Parameters.Add("@Text", System.Data.SqlDbType.Binary, int.MaxValue).Value = buffer;
sqlCn.Open();
sqlCmd.ExecuteNonQuery();
Console.WriteLine("从数据库查出来");
sqlCmd.CommandText = "select top 1 Text from Table_1";
object value = sqlCmd.ExecuteScalar();
buffer = (byte[])value;
}
Console.WriteLine("写入文件");
using (FileStream fs = new FileStream(@"D:\Test1.docx", FileMode.OpenOrCreate, FileAccess.Write))
{
fs.Write(buffer, 0, buffer.Length);
}
Console.ReadLine();
}
}
#7
那要是我想把存入的数据 取出来 显示到富文本框中 该如何操作呢?
#8
LZ一会存储类型text一会又和二进制流扯上关系,到底你要怎么存储
#9
最初只是想把txt文档保存到数据库中
但是text类型又不行 现在知道了 可以用arbitrary类型
#1
lz可以使用FileStream流进行读写,关于具体如何使用,lz看看帮助就很容易实现了
#2
filestream 我都进去 全是?之类的 不是二进制数据啊
你看我的代码
ofd.Title = "*txt|*.txt|*.doc|*.docx";
if (ofd.ShowDialog() == DialogResult.OK)
{
string fullpath = ofd.FileName;//文件路径
FileStream fs = new FileStream(fullpath, FileMode.Open);
//BinaryReader br = new BinaryReader(fs);
StreamReader sr = new StreamReader(fs);
string txt = sr.ReadToEnd();
//打开数据库
string server = @".\SQLEXPRESS";
string conStr = string.Format("server={0};uid={1};pwd={2};database={3}",
server, "sa", "123", "TestDB");
SqlConnection con = new SqlConnection(conStr);
try
{
con.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
SqlCommand com = new SqlCommand("insert into Text values(@TextList)", con);
com.Parameters.Add("TextList", SqlDbType.Text);
com.Parameters["TextList"].Value = txt;
com.ExecuteNonQuery();
con.Close();
}
#3
Text字段类型怎么会显示<二进制数据>呢?
#4
那我应该有什么类型的呢?还是说就用TEXT类型 保存我说的数据
除了image类型 还有什么类型我能用?
#5
希望能帮倒你
//这个Paths是文件路径比如说 D:/test.txt
var Rbytes = File.ReadAllBytes(Paths); //把txt文件的内容读取出来给Rbytes
var db = datetable(Rbytes);
foreach (var t in db )
{
Info.Text = t;
}
//这个Paths是文件路径比如说 D:/test.txt
var Rbytes = File.ReadAllBytes(Paths); //把txt文件的内容读取出来给Rbytes
var db = datetable(Rbytes);
foreach (var t in db )
{
Info.Text = t;
}
#6
如果你是全文本的,直接使用Text类型就好。
我看到你的"*txt|*.txt|*.doc|*.docx";如果是doc文档,就有可能包含图片了,
你可以用varbinary(MAX)
class Program
{
static void Main(string[] args)
{
Console.WriteLine("读取文件");
byte[] buffer;
using (FileStream fs = new FileStream(@"D:\Test.docx", FileMode.Open, FileAccess.Read))
{
buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
}
using(SqlConnection sqlCn=new SqlConnection(
"Data Source=...; Initial Catalog=...; User Id=...; Password=..."))
using (SqlCommand sqlCmd = sqlCn.CreateCommand())
{
Console.WriteLine("写入数据库");
sqlCmd.CommandText = "insert into Table_1(Text) values(@Text)";
sqlCmd.Parameters.Add("@Text", System.Data.SqlDbType.Binary, int.MaxValue).Value = buffer;
sqlCn.Open();
sqlCmd.ExecuteNonQuery();
Console.WriteLine("从数据库查出来");
sqlCmd.CommandText = "select top 1 Text from Table_1";
object value = sqlCmd.ExecuteScalar();
buffer = (byte[])value;
}
Console.WriteLine("写入文件");
using (FileStream fs = new FileStream(@"D:\Test1.docx", FileMode.OpenOrCreate, FileAccess.Write))
{
fs.Write(buffer, 0, buffer.Length);
}
Console.ReadLine();
}
}
#7
那要是我想把存入的数据 取出来 显示到富文本框中 该如何操作呢?
#8
LZ一会存储类型text一会又和二进制流扯上关系,到底你要怎么存储
#9
最初只是想把txt文档保存到数据库中
但是text类型又不行 现在知道了 可以用arbitrary类型