I have a link like this: C:\folder\folder\image.jpg . How can I save image to database in SQL Server?
If it was a HttpPostedFileBase I would knew how to save it, but now I have only a link.
it's a link because I exctracted src tags from tiniMCE editor field .
Thank you.
Have a look at Download and Upload Images from SQL Server via ASP.Net MVC
Code is also available on codeproject.com
Example from msdn social:
table:
CREATE TABLE [dbo].[FileStoreDemo](
[id] [int] NOT NULL,
[name] [nvarchar](100) NOT NULL,
[content] [varbinary](max) NULL,
CONSTRAINT [pk_filestoredemo_id] PRIMARY KEY CLUSTERED ([id] ASC))
code:
string filename = Server.MapPath("/Content/Desert.jpg")
using (fooEntities fe = new fooEntities())
{
FileStoreDemo fsd = fe.FileStoreDemoes.CreateObject();
fsd.name = new FileInfo(filename).Name;
fsd.content = File.ReadAllBytes(filename);
fe.FileStoreDemoes.AddObject(fsd);
fe.SaveChanges();
}
http://social.msdn.microsoft.com/Forums/en/sqlgetstarted/thread/1857938d-b74a-4954-bbde-734dfef08039
[HttpPost]
public ActionResult Create(string fileTitle)
{
try
{
HttpPostedFileBase file = Request.Files[0];
byte[] imageSize = new byte[file.ContentLength];
file.InputStream.Read(imageSize, 0, (int)file.ContentLength);
Image image = new Image()
{
Name = file.FileName.Split('\\').Last(),
Size = file.ContentLength,
Title = fileTitle,
ID = 1,
Image1 = imageSize
};
db.Images.AddObject(image);
db.SaveChanges();
return RedirectToAction("Detail");
}
catch(Exception e)
{
ModelState.AddModelError("uploadError", e);
}
return View();
}
Related
Maybe this question was already answered but I try to add sqfLite to my project but I get this error:
In my debug console:
no such table: infotable in "SELECT * FROM infotable"
This is my code:
final String infoTable = 'infotable';
final String columnID = '_id';
final String columnName = 'name';
final String columnCivilStatus = 'civil';
final String columnWorking = 'working';
final String columnJobTitle = 'job';
final String columnWorkingDomain = 'workingdomain';
final String columnMonthlyIncome = 'monthlyincome';
class SqfLite {
int id;
int sliderValue;
int monthChoiceChip;
String reasonChoiceChip;
String name;
String civilStatus;
int working;
String jobTitle;
int workingDomain;
String monthlyIncome;
String currency;
Position latitude;
Position longitude;
Map<String, dynamic> toMap() {
var map = <String, dynamic>{
columnCivilStatus: civilStatus,
columnJobTitle: jobTitle,
columnMonthlyIncome: monthlyIncome,
columnWorkingDomain: workingDomain,
columnWorking: working,
columnName: name,
};
if (id != null) {
map[columnID] = id;
}
return map;
}
SqfLite();
SqfLite.fromMap(Map<String, dynamic> map) {
id = map[columnID];
name = map[columnName];
civilStatus = map[columnCivilStatus];
working = map[columnWorking];
jobTitle = map[columnJobTitle];
workingDomain = map[columnWorkingDomain];
monthlyIncome = map[columnMonthlyIncome];
}
}
class SqfLiteProvider {
Database db;
Future open(String path) async {
db = await openDatabase(path, version: 1,
onCreate: (Database db, int version) async {
await db.execute('''
create table $infoTable (
$columnID integer primary key autoincrement,
$columnName text not null,
$columnCivilStatus text not null,
$columnWorking integer not null,
$columnJobTitle text not null,
$columnWorkingDomain integer not null,
$columnMonthlyIncome text not null)
''');
});
}
Future<SqfLite> getSqfLite(int id) async {
List<Map> maps = await db.query(infoTable,
columns: [
columnID,
columnName,
columnCivilStatus,
columnWorking,
columnJobTitle,
columnWorkingDomain,
columnMonthlyIncome,
],
where: '$columnID = ?',
whereArgs: [id]);
if (maps.length > 0) {
return SqfLite.fromMap(maps.first);
}
return null;
}
Future close() async => db.close();
}
I get the error here:
Future<void> openDataBase() async {
db = await openDatabase('infotable.db');
records = await db.query('infotable');
mapRead = records.first;
....
}
I've followed the example from the official page of the plugin
I can't use the latest version because of some pubspec.yaml conflicts.
I've tried to flutter clean and reinstalling the app but it didn't work
You have defined the open method inside SqfLiteProvider, but you are not using it. Instead, you are calling the same openDatabase('infotable.db'); method from sqflite package where the onCreate callback is not defined - you get an error.
So, instead of calling db = await openDatabase('infotable.db'); directly, use the SqfLiteProvider.open() you have defined.
Given I have a Guid pointing to an Image. How can I query that image for it's meta data fields (title, description, etc)?
Is there helpers for reading the description of an image?
Something like this works.
string description = null;
using (DataConnection connection = new DataConnection())
{
var mediaFile = connection
.Get<IMediaFile>()
.Where(m => m.Id == pictureId)
.FirstOrDefault();
if(null != mediaFile)
{
description = mediaFile.Description;
}
}
I have created a simple form in the NEWMODULE plugin and a database table to save form data, but i don't know how to insert the form data into the database. I save the code into my_form.php, this is my code:
class myform_form extends moodleform {
public function definition() {
global $DB,$CFG;
$mform = &$this->_form;
$mform->addElement('text', 'tendethi', get_string('tendethi', 'myform'));
$mform->setType('tendethi', PARAM_TEXT);
$mform->setDefault('tendethi','Nhập tên đề thi');
$mform->addElement('text', 'mdt', get_string('madethi','myform'));
$mform->setType('mdt', PARAM_TEXT);
$mform->setDefault('mdt','Nhập mã đề thi');
$mform->addElement('duration', 'timelimit', get_string('thoigianlambai','myform'));
$mform->setType('timelimit', PARAM_TEXT);
$mform->addElement('text', 'gvrd', get_string('giaovienrade','myform'));
$mform->setType('gvrd', PARAM_TEXT);
$mform->setDefault('gvrd','Nhập họ tên giáo viên ra đề thi');
$mform->addElement('text', 'tmh', get_string('tenmonhoc','myform'));
$mform->setType('tmh', PARAM_TEXT);
$mform->setDefault('tmh','Nhập tên môn học');
$buttonarray=array();
$buttonarray[] = &$mform->createElement('submit', 'submitbutton', get_string('savechanges'));
$buttonarray[] = &$mform->createElement('reset', 'resetbutton', get_string('revert'));
$buttonarray[] = &$mform->createElement('cancel');
$mform->addGroup($buttonarray, 'buttonar', '', array(' '), false);
$mform->closeHeaderBefore('buttonar');
and this is code insert form data into database :
// insert database into table
//global $DB;
$tendethi = optional_param('tendethi', null, PARAM_TEXT);
$mdt = optional_param('mdt', null, PARAM_INT);
$timelimit = optional_param('timelimit', null, PARAM_INT);
$gvrd = optional_param('gvrd', null, PARAM_TEXT);
$tmh = optional_param('tmh', null, PARAM_TEXT);
if($data = $mform->get_data()){
$record = new stdClass();
$record->tendethi = $tendethi ;
$record->mdt = $mdt ;
$record->timelimit = $timelimit ;
$record->gvrd = $gvrd ;
$record->tmh = $tmh ;
$DB=insert_record('myform_form', $record, false);
}
please help me !
Your code should look roughly like this:
$urlaftersubmission = new moodle_url(); // You will need to fill this in.
$form = new myform_form();
if ($form->is_cancelled()) {
redirect($urlaftersubmission);
}
if ($data = $form->get_data()) {
$DB->insert_record('name_of_table', $data);
redirect($urlaftersubmission);
}
echo $OUTPUT->header();
$form->display();
echo $OUTPUT->footer();
Note, you may have to adjust the data slightly for it to be in the correct format for inserting in the database. You should also make sure that you create your database table using the install.xml or upgrade.php files in your plugin (and use the Moodle built-in xmldb editor to generate those files correctly), otherwise Moodle will not recognise them for inserting data.
I am trying to generate form from my database.
CREATE TABLE [dbo].[FieldsMaster](
[FieldId] [int] IDENTITY(1,1) NOT NULL,
[FieldControlName] [varchar](50) NULL,
[FieldDataType] [varchar](20) NULL,
[FieldControlType] [varchar](30) NULL,
[DisplayLabel] [varchar](200) NULL,
[FieldSize] [int] NULL,
[FieldRegularExpression] [varchar](200) NULL,
[FieldOptions] [varchar](500) NULL,
[OptionalQuery] [varchar](200) NULL,
[REMessage] [varchar](150) NULL,
[FieldRequired] [bit] NULL,
[FRMessage] [varchar](150) NULL
)
Generate some data for the table
insert into FieldsMaster (FieldControlName,FieldDataType,FieldControlType,DisplayLabel,FieldSize,FieldRegularExpression,
FieldOptions,OptionalQuery,REMessage,FieldRequired,FRMessage,IsActive)
values
('txtOtherInfo','varchar','TextArea','Other Information',400,NULL,
NULL,NULL,NULL,0,NULL)
insert into FieldsMaster (FieldControlName,FieldDataType,FieldControlType,DisplayLabel,FieldSize,FieldRegularExpression,
FieldOptions,OptionalQuery,REMessage,FieldRequired,FRMessage,IsActive)
values
('txtTitle','varchar','TextBox','Title',100,NUll,
NULL,NULL,NULL,1,'Please enter title')
Now this form with it fields is stored in my sql db. I want to generate a form in mvc. How the model should be formed/ how to generate form in view?
I am really confused here. Your help is really appreciated. Thanks
To have more idea, below form should be displayed based on the fields in FieldsMaster
Other Information(as label) : TextArea (With Id as txtOtherInfo)
Title (as Label) : TextBox (With Id as txtTitle)
If you want to add form directly from database, you can do.
First you need to do into model an Enum like these (for email):
public int EmailTemplateId { get; set; }
public int Type { get; set; }
public string Name { get; set; }
public enum Emailtype
{
Base = 0,
Recovery = 1,
NewAccount = 2,
ChangePassword = 3,
BlockAccount = 4,
UnlockAccount = 5,
ForgetPassword = 6
}
So each one of thee represent a different template, and in your template view you have something like
<body>
//some code of your template
{-container-}
</body>
As you can see {-container-} is the property you change for each template. so you made new containers that you´be insert into sql like
<tr>
<td>Hi {name}. Your password is {password}</td>
</tr>
You don´t need tag here because you have it into your first template and this code
And in controller:
public void NewAccount(string name, string email,string password, string user)
{
var from = model.From;
var loginUrl = model.LoginUrl;
const string title = "New Register - Stackoverflow";
EmailsService sendEmail = new EmailsService
{
Subject = title,
To = email,
From = from
};
}
//There is our first template (Base template)
var templateBase = Get(Emailtype.Base);
//This one is template who changes (container)
var templateText = Get(Emailtype.NewAccount);
//Here you replace Name property of class for your container code
var body = templateBase.Name.Replace("{-container-}", templateText.Name);
sendEmail.EmailBody = body.Replace("{Name}", name)
.Replace("{Title}", title)
.Replace("{User}", user)
.Replace("{Password}", password)
.Replace("{Link}", loginUrl);
sendEmail.Send();
}
Finally in your sql you can insert code of your container... it show like that:
EmailTemplateId=1
Type= 1 //(Recovery ones)
Name= <tr> <td>Hi {name}. Your password is {password}</td> </tr>
Hope it helps!
I am new to NHibernate and am running into some issues getting the Automap functionality to work properly. Here are a couple of issues I am having.
The getting started wiki for Fluent NHibernate (http://wiki.fluentnhibernate.org/Getting_started) defines a sample with store, product, and employee classes--as well as the mapping for those classes. I replaced the manual mapping with AutoMapping and used Fluent NHibernate to generate the schema. Every thing generated properly. However, when the application attempted to save sample store, product, and employee objects, I received an error "TransientObjectException was Unhandled: object references an unsaved transient instance - save the transient instance before flushing. Type: FluentExample.Entities.Employee, Entity: FluentExample.Entities.Employee".
The automap looks like:
.Mappings(m=>
m.AutoMappings.Add(
AutoMap.AssemblyOf<FluentExample.Entities.Employee>(type => type.Namespace == "FluentExample.Entities")))
The object creation code (straight from the wiki) looks like the following. I should mention that the object creation works fine when using the manual fluent mapping.
// create a couple of Stores each with some Products and Employees
var barginBasin = new Store { Name = "Bargin Basin" };
var superMart = new Store { Name = "SuperMart" };
var potatoes = new Product { Name = "Potatoes", Price = 3.60 };
var fish = new Product { Name = "Fish", Price = 4.49 };
var milk = new Product { Name = "Milk", Price = 0.79 };
var bread = new Product { Name = "Bread", Price = 1.29 };
var cheese = new Product { Name = "Cheese", Price = 2.10 };
var waffles = new Product { Name = "Waffles", Price = 2.41 };
var daisy = new Employee { FirstName = "Daisy", LastName = "Harrison" };
var jack = new Employee { FirstName = "Jack", LastName = "Torrance" };
var sue = new Employee { FirstName = "Sue", LastName = "Walkters" };
var bill = new Employee { FirstName = "Bill", LastName = "Taft" };
var joan = new Employee { FirstName = "Joan", LastName = "Pope" };
// add products to the stores, there's some crossover in the products in each
// store, because the store-product relationship is many-to-many
AddProductsToStore(barginBasin, potatoes, fish, milk, bread, cheese);
AddProductsToStore(superMart, bread, cheese, waffles);
// add employees to the stores, this relationship is a one-to-many, so one
// employee can only work at one store at a time
AddEmployeesToStore(barginBasin, daisy, jack, sue);
AddEmployeesToStore(superMart, bill, joan);
// save both stores, this saves everything else via cascading
session.SaveOrUpdate(barginBasin);
session.SaveOrUpdate(superMart);
transaction.Commit();
When attempting to use the AutoMap functionality on one of my own classes, a class is
created, but for some reason I get errors when I attempt to actually
insert a record. The main error message says "AssertionFailure was
unhandled: null value". Here is a sample of my class, the config/
mapping, the error, and the create table script. (Note: The attributes
in the class are for use with ASP.NET MVC and have nothing to do with
NH.)
namespace Credit.Data.Entities
{
[Serializable]
public class EthnicityType
{
public EthnicityType()
{
}
[DisplayName("Id")]
[Required(ErrorMessage = "Id is required.")]
public virtual Guid Id { get; private set; }
[DisplayName("Title")]
[Required(ErrorMessage = "Title is required.")]
[StringLength(80, ErrorMessage = "Title must be less than 80 characters.")]
public virtual string Title { get; set; }
[DisplayName("Description")]
[StringLength(255, ErrorMessage = "Description must be less than 255 characters.")]
public virtual string Description { get; set; }
[DisplayName("Is Active")]
[Required(ErrorMessage = "Is Active is required.")]
public virtual bool IsActive { get; set; }
}
}
Here is the Fluent NHibernate configuration.
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c => c.FromConnectionStringWithKey ("CreditConnectionString"))
.UseReflectionOptimizer()
.AdoNetBatchSize(25)
.DefaultSchema("dbo")
.Cache(c => c
.UseQueryCache()
.ProviderClass<HashtableCacheProvider>())
.ShowSql())
.Mappings(m =>
m.AutoMappings.Add(AutoMap.AssemblyOf<Credit.Data.Entities.EthnicityType>(type => type.Namespace == "Credit.Data.Entities")))
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
And the error. Yuk!
NHibernate.AssertionFailure was unhandled
Message="null identifier"
Source="NHibernate"
StackTrace:
at NHibernate.Engine.EntityKey..ctor(Object identifier, String
rootEntityName, String entityName, IType identifierType, Boolean
batchLoadable, ISessionFactoryImplementor factory, EntityMode
entityMode)
at NHibernate.Engine.EntityKey..ctor(Object id,
IEntityPersister persister, EntityMode entityMode)
at
NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrReplicate
(Object entity, EntityKey key, IEntityPersister persister, Boolean
useIdentityColumn, Object anything, IEventSource source, Boolean
requiresImmediateIdAccess)
at
NHibernate.Event.Default.AbstractSaveEventListener.PerformSave(Object
entity, Object id, IEntityPersister persister, Boolean
useIdentityColumn, Object anything, IEventSource source, Boolean
requiresImmediateIdAccess)
at
NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId
(Object entity, String entityName, Object anything, IEventSource
source, Boolean requiresImmediateIdAccess)
at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId
(SaveOrUpdateEvent event)
at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient
(SaveOrUpdateEvent event)
at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.PerformSaveOrUpdate
(SaveOrUpdateEvent event)
at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate
(SaveOrUpdateEvent event)
at NHibernate.Impl.SessionImpl.FireSaveOrUpdate
(SaveOrUpdateEvent event)
at NHibernate.Impl.SessionImpl.SaveOrUpdate(Object obj)
at FluentExample.Program.PopulateRecordTest(ISessionFactory
sessionFactory) in C:\Code\FluentExample\FluentExample\Program.cs:line
52
at FluentExample.Program.BootstrapNH() in C:\Code\FluentExample
\FluentExample\Program.cs:line 32
at FluentExample.Program.Main() in C:\Code\FluentExample
\FluentExample\Program.cs:line 24
at System.AppDomain._nExecuteAssembly(Assembly assembly, String
[] args)
at
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
And the table schema--just for kicks.
USE [Credit]
GO
/****** Object: Table [dbo].[EthnicityType] Script Date:
08/30/2009 04:59:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[EthnicityType](
[ID] [uniqueidentifier] NOT NULL,
[Title] [nvarchar](80) NOT NULL,
[Description] [nvarchar](255) NULL,
[IsActive] [bit] NOT NULL
CONSTRAINT [PK_EthnicityType_Title] PRIMARY KEY NONCLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY
= OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[EthnicityType] ADD CONSTRAINT
[DF_EthnicityType_ID] DEFAULT (newid()) FOR [ID]
GO
ALTER TABLE [dbo].[EthnicityType] ADD CONSTRAINT
[DF_EthnicityType_IsActive] DEFAULT ((1)) FOR [IsActive]
GO
I've tried a number of things to get automapping working in my environment but just have not yet been fully successful. Some variations I have tried include
Using a static map and allowing Fluent Nhibernate to recreate my table.
Changing the private set on Id to public
Creating a primarykeyconvention to try and set the Guid in case that was the issue and adding this to my mapping.
Primary Key Convention:
public class PrimaryKeyConvention : IIdConvention
{
public void Apply(IIdentityInstance instance)
{
instance.GeneratedBy.GuidComb();
//instance.GeneratedBy.Native();
}
}
Any advice or feedback is very much appreciated.
The Fluent NHibernate example entities are in the Examples.FirstProject.Entities namespace, while you're limiting the AutoMap to FluentExample.Entities (in type => type.Namespace == "FluentExample.Entities").
The first error message points to that by stating "references an unsaved transient instance [...] FluentExample.Entities.Employee"
You should update the AutoMap code to point to the correct interface. If you have classes in multiple interfaces, you can modify the criteria to include an or.